One-dimensional cellular automata: Difference between revisions

m (→‎{{header|jq}}: mention use of recurse to continue until quiescence)
Line 2,391:
__##________________
__##________________</pre>
 
'''Using nested functions and method calling style:'''
<pre>
proc cell_automata =
proc evolve_into(X, T : var string) =
for i in X.low..X.high:
let
alive = X[i] == 'o'
left = if i == X.low: false else: X[i - 1] == 'o'
right = if i == X.high: false else: X[i + 1] == 'o'
T[i] =
if alive: if left xor right: 'o' else: '.'
else: if left and right: 'o' else: '.'
 
var
X = ".ooo.oo.o.o.o.o..o.."
T = X
 
for i in 1..10:
X.echo
X.evolve_into T
T.swap X
</pre>
 
=={{header|OCaml}}==
Anonymous user