From 004d49dc5fc2a38aa1485dcd799dfe7cfd33902e Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 18 Oct 2021 19:16:22 +0200 Subject: Add rule110 to the examples --- examples/rule110.bdl | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 examples/rule110.bdl (limited to 'examples') diff --git a/examples/rule110.bdl b/examples/rule110.bdl new file mode 100644 index 0000000..abc89a9 --- /dev/null +++ b/examples/rule110.bdl @@ -0,0 +1,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) -- cgit v1.2.1