One-dimensional cellular automata: Difference between revisions
Content added Content deleted
Line 646: | Line 646: | ||
function rules(integer tri) |
function rules(integer tri) |
||
if tri = 3 or tri = 5 or tri = 6 then |
if tri = 3 or tri = 5 or tri = 6 then |
||
return |
return 1 |
||
else |
else |
||
return 0 |
return 0 |
||
Line 653: | Line 653: | ||
function next_gen(atom gen) |
function next_gen(atom gen) |
||
atom new, |
atom new, bit |
||
new = 0 |
new = 0 |
||
⚫ | |||
new += rules(and_bits(gen,3)*2) -- work with the first bit separately |
|||
⚫ | |||
while gen > 0 do |
while gen > 0 do |
||
new += |
new += bit*rules(and_bits(gen,7)) |
||
gen = floor(gen/2) -- shift right |
gen = floor(gen/2) -- shift right |
||
bit *= 2 -- shift left |
|||
end while |
end while |
||
return new |
return new |
||
Line 676: | Line 679: | ||
end function |
end function |
||
atom gen,prev |
atom gen, prev |
||
integer n |
integer n |
||