Skip to content

Commit d2c6e46

Browse files
committed
Add Acton binarytrees
1 parent c1b0575 commit d2c6e46

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed

bench/algorithm/binarytrees/1.act

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env runacton
2+
3+
class Node(object):
4+
left: ?Node
5+
right: ?Node
6+
def __init__(self, left, right):
7+
self.left = left
8+
self.right = right
9+
10+
def make(depth: int) -> Node:
11+
if depth == 0:
12+
return Node(None, None)
13+
else:
14+
d = depth - 1
15+
return Node(make(d), make(d))
16+
17+
def check(node: Node) -> int:
18+
l = node.left
19+
r = node.right
20+
sum = 1
21+
if l is not None:
22+
sum += check(l)
23+
if r is not None:
24+
sum += check(r)
25+
return sum
26+
27+
def binary_tree(n: int):
28+
min_depth = 4
29+
max_depth = max([min_depth + 2, n], 0)
30+
stretch_depth = max_depth + 1
31+
print("stretch tree of depth %d\t check: %d" % (stretch_depth, check(make(stretch_depth))))
32+
33+
long_lived_tree = make(max_depth)
34+
35+
mmd = max_depth + min_depth
36+
for d in range(min_depth, stretch_depth, 2):
37+
i = 2 ** (mmd - d)
38+
cs = 0
39+
for _ in range(0, i, 1):
40+
cs += check(make(d))
41+
print("%d\t trees of depth %d\t check: %d" % (i, d, cs))
42+
43+
print("long lived tree of depth %d\t check: %d" % (max_depth, check(long_lived_tree)))
44+
45+
actor main(env):
46+
n = int(env.argv[1]) if len(env.argv) > 1 else 6
47+
binary_tree(n)
48+
await async env.exit(0)

bench/algorithm/edigits/1.act

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
#!/usr/bin/env runacton
2+
13
# port of 1.py
4+
25
import math
36

47
ln_tau = math.log(6.283185307179586)

bench/bench_acton.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
lang: acton
22
problems:
3-
- name: helloworld
3+
- name: binarytrees
44
source:
55
- 1.act
66
- name: edigits
77
source:
88
- 1.act
9+
- name: helloworld
10+
source:
11+
- 1.act
912
- name: nsieve
1013
source:
1114
- 1.act

0 commit comments

Comments
 (0)