RosettaCodeData/Task/One-dimensional-cellular-automata/Liberty-BASIC/one-dimensional-cellular-automata.basic
2023-07-01 13:44:08 -04:00

25 lines
714 B
Text

' [RC] 'One-dimensional cellular automata'
' does not wrap so fails for some rules
rule$ ="00010110" ' Rule 22 decimal
state$ ="0011101101010101001000"
for j =1 to 20
print state$
oldState$ =state$
state$ ="0"
for k =2 to len( oldState$) -1
NHood$ =mid$( oldState$, k -1, 3) ' pick 3 char neighbourhood and turn binary string to decimal
vNHood =0
for kk =3 to 1 step -1
vNHood =vNHood +val( mid$( NHood$, kk, 1)) *2^( 3 -kk)
next kk
' .... & use it to index into rule$ to find appropriate new value
state$ =state$ +mid$( rule$, vNHood +1, 1)
next k
state$ =state$ +"0"
next j
end