RosettaCodeData/Task/One-dimensional-cellular-automata/Icon/one-dimensional-cellular-automata-2.icon
Ingy döt Net b83f433714 tasks a-s
2013-04-10 23:57:08 -07:00

16 lines
473 B
Text

procedure main(A)
A := if *A = 0 then ["01110110101010100100"]
CA := show("0"||A[1]||"0") # add always dead border cells
every CA := show(|evolve(CA)\10) # limit to max of 10 generations
end
procedure show(ca)
write(ca[2:-1]) # omit border cells
return ca
end
procedure evolve(CA)
newCA := repl("0",*CA)
every newCA[i := 2 to (*CA-1)] := (CA[i-1]+CA[i]+CA[i+1] = 2, "1")
return CA ~== newCA # fail if no change
end