blob: 6fa478fab4c0f71b5db1ede5ffcda72d17442293 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// walk one shared spine from two parents. the checksum is one repetition.
fn build() {
let i = 0, spine = 0;
while (i < 40) { spine = cons(i, spine); i++; }
return cons(cons(spine, 1), cons(spine, 2));
}
fn sum(t) {
let a = 0;
while (t) { a = a + car(t); t = cdr(t); }
return a;
}
fn work() {
let ch = get_c(), reps = 0, acc = 0, root, spine, k;
while (ch >= '0' && ch <= '9') { reps = reps * 10 + ch - '0'; ch = get_c(); }
root = build();
spine = car(car(root));
while (reps > 0) {
k = 0;
acc = 0;
while (k < 200) { acc = acc + sum(spine); k++; }
acc = acc + cdr(car(root)) + cdr(cdr(root));
reps--;
}
return acc;
}
fn main() {
put_n(work());
put_c(10);
return 0;
}
|