Mercurial > repos > rhope
annotate binary_trees.rhope @ 149:804e48af1027
Fix file not found handling
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 22 Nov 2010 20:38:03 +0000 |
parents | f4fd8962c385 |
children | d59611dcec71 |
rev | line source |
---|---|
93 | 1 |
2 | |
3 Blueprint Tree | |
4 { | |
5 Left | |
6 Right | |
7 Item | |
8 } | |
9 | |
10 Blueprint Empty | |
11 { | |
12 | |
13 } | |
14 | |
15 Make Tree[item,depth:out] | |
16 { | |
17 If[depth] | |
18 { | |
19 dbl <- [item]+[item] | |
20 ndepth <- [depth]-[1] | |
21 out <- [[[Build[Tree()]]Left <<[ Make Tree[[dbl]-[1], ndepth] ]]Right <<[ Make Tree[dbl, ndepth] ]]Item <<[item] | |
22 }{ | |
23 out <- [[[Build[Tree()]]Left <<[Build[Empty()]]]Right <<[Build[Empty()]]]Item <<[item] | |
24 } | |
25 } | |
26 | |
27 Check Tree@Tree[node:out] | |
28 { | |
29 out <- [[[node]Item >>]+[Check Tree[[node]Left >>]]] - [Check Tree[[node]Right >>]] | |
30 } | |
31 | |
32 Check Tree@Empty[node:out] | |
33 { | |
34 out <- 0 | |
35 } | |
36 | |
37 Step[num, depth: out] | |
38 { | |
39 out <- [Check Tree[Make Tree[num, depth]]] + [Check Tree[Make Tree[[0]-[num], depth]]] | |
40 } | |
41 | |
42 Test Size[sum, current,iterations,depth:out] | |
43 { | |
44 nsum <- [sum]+[Step[current, depth]] | |
45 If[[current]=[iterations]] | |
46 { | |
47 out <- Val[nsum] | |
48 }{ | |
49 out <- Test Size[nsum, [current]+[1], iterations, depth] | |
50 } | |
51 } | |
52 | |
53 Test Sizes[current,max,iterations:out] | |
54 { | |
55 sum <- Test Size[0, 1, iterations, current] | |
56 { | |
95
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
57 Print[ |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
58 [[[[String[[iterations]*[2]] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
59 ]Append["\t trees of depth "] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
60 ]Append[String[current]] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
61 ]Append["\t check: "] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
62 ]Append[String[sum]]] |
93 | 63 { |
64 If[[current]=[max]] | |
65 { | |
66 out <- 1 | |
67 }{ | |
68 out <- Test Sizes[[current]+[2], max, [iterations]/[4]] | |
69 } | |
95
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
70 } |
93 | 71 } |
72 } | |
73 | |
95
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
74 Main[args] |
93 | 75 { |
95
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
76 [args]Index[1] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
77 { |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
78 min depth <- 4 |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
79 max depth <- Max[[min depth]+[2], Int32[~]] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
80 Print[ |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
81 [[["stretch tree of depth " |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
82 ]Append[String[[max depth]+[1]]] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
83 ]Append["\t check: "] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
84 ]Append[String[Check Tree[Make Tree[0, [max depth]+[1]]]]]] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
85 { long lived <- Make Tree[0, max depth] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
86 { Test Sizes[min depth, max depth, [1]LShift[max depth]] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
87 { Print[ |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
88 [[["long lived tree of depth " |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
89 ]Append[String[max depth]] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
90 ]Append["\t check: "] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
91 ]Append[String[Check Tree[long lived]]]] }}} |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
92 }{ |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
93 Print["you must provide a max depth param"] |
f4fd8962c385
Cleaned up binary trees benchmark, made memory allocator somewhat configurable at compile time
Mike Pavone <pavone@retrodev.com>
parents:
93
diff
changeset
|
94 } |
93 | 95 } |
96 |