One-dimensional cellular automata

var seq = "_###_##_#_#_#_#__#__"
var x = ''
 
loop {
    seq.tr!('01', '_#')
    say seq
    seq.tr!('_#', '01')
    seq.gsub!(/(?<=(.))(.)(?=(.))/, {|s1,s2,s3| s1 == s3 ? (s1 ? 1-s2.to_i : 0: s2})
    (x != seq) && (x = seq) || break
}

Output:

_###_##_#_#_#_#__#__
_#_#####_#_#_#______
__##___##_#_#_______
__##___###_#________
__##___#_##_________
__##____###_________
__##____#_#_________
__##_____#__________
__##________________

Output:

Last updated

Was this helpful?