blob: abc89a9e4e31e0d618c061563584c747f677fa29 (
plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
(def sequence (list 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1))
(fun reverse (ls)
(fun rev-acc (ls acc)
(if (nil? ls)
acc
(rev-acc (cdr ls) (cons (car ls) acc))))
(rev-acc ls '()))
(fun print-line (seq)
(if (or (nil? seq) (= 0 (car seq)))
(print " ")
(print "🖤"))
(if (not (nil? seq)) (print-line (cdr seq))))
(fun rule-110 (seq n)
(print-line seq)
(newline)
(fun new-generation (lst seq)
(def a (if (nil? seq) 0 (car seq)))
(def b (if (or (nil? seq)
(nil? (cdr seq)))
0
(car (cdr seq))))
(def c (if (or (nil? seq)
(nil? (cdr seq))
(nil? (cdr (cdr seq))))
0
(car (cdr (cdr seq)))))
(def number (+ (* a 2 2) (* b 2) c))
(def cell (cond ((= number 0) 0)
((= number 1) 1)
((= number 2) 1)
((= number 3) 1)
((= number 4) 0)
((= number 5) 1)
((= number 6) 1)
((= number 7) 0)))
(if (nil? (cdr seq))
lst
(new-generation (cons cell lst) (cdr seq))))
(def seq (cons 0 (reverse (new-generation '() seq))))
(if (= n 0)
()
(rule-110 seq (- n 1))))
(rule-110 sequence 25)
|