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 2
return 1
else
else
return 0
return 0
Line 653: Line 653:


function next_gen(atom gen)
function next_gen(atom gen)
atom new,mult
atom new, bit
new = 0
new = 0

mult = 1
new += rules(and_bits(gen,3)*2) -- work with the first bit separately
but = 2
while gen > 0 do
while gen > 0 do
new += mult*rules(and_bits(gen,7))
new += bit*rules(and_bits(gen,7))
gen = floor(gen/2) -- shift right
gen = floor(gen/2) -- shift right
mult *= 2 -- shift left
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