One-dimensional cellular automata: Difference between revisions
Content added Content deleted
(→{{header|J}}: tweak (remove extraneous parens)) |
(Added Scheme) |
||
Line 1,100: | Line 1,100: | ||
..##.....#.......... |
..##.....#.......... |
||
..##................</pre> |
..##................</pre> |
||
=={{header|Scheme}}== |
|||
{{Works with|Scheme|R<math>^5</math>RS}} |
|||
<lang scheme>(define (next-generation left petri-dish right) |
|||
(if (null? petri-dish) |
|||
(list) |
|||
(cons (if (= (+ left |
|||
(car petri-dish) |
|||
(if (null? (cdr petri-dish)) |
|||
right |
|||
(cadr petri-dish))) |
|||
2) |
|||
1 |
|||
0) |
|||
(next-generation (car petri-dish) (cdr petri-dish) right)))) |
|||
(define (display-evolution petri-dish generations) |
|||
(if (not (zero? generations)) |
|||
(begin (display petri-dish) |
|||
(newline) |
|||
(display-evolution (next-generation 0 petri-dish 0) |
|||
(- generations 1))))) |
|||
(display-evolution (list 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0) 10)</lang> |
|||
Output: |
|||
<lang>(1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0) |
|||
(1 0 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0) |
|||
(0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0) |
|||
(0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0) |
|||
(0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0) |
|||
(0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0) |
|||
(0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0) |
|||
(0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0) |
|||
(0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) |
|||
(0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)</lang> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |
||
<lang tcl>proc evolve {a} { |
<lang tcl>proc evolve {a} { |