upscheme/scheme-examples/rule30.scm

22 lines
636 B
Scheme

(define (rule30-step b)
(let ((L (ash b -1))
(R (ash b 1)))
(let ((~b (lognot b))
(~L (lognot L))
(~R (lognot R)))
(logior (logand L ~b ~R)
(logand ~L b R)
(logand ~L b ~R)
(logand ~L ~b R)))))
(define (bin-draw s)
(string.map (lambda (c) (case c
(#\1 #\#)
(#\0 #\ )
(else c)))
s))
(for-each (lambda (n)
(displayln (bin-draw (string.lpad (number->string n 2) 63 #\0))))
(nestlist rule30-step (uint64 #x0000000080000000) 32))