#>>716 ruby # Rule を配列化。 (L C R) 3bit 0..7 の状態 >>659なら [0,1,0,1,1,0,1,0]
Rule = [0,1,0,1,1,1,1,0] # rule >>706, >>716
life = '.*...**.*.***..'
lifeBit = life.size
bord = life.tr('.*','01').to_i(2)
fmt = "%%0%db" % lifeBit
bords = {bord=>true}
100.times{|gene|
puts "%5d %s" % [gene+1, (fmt % bord).tr('01','.*')]
bord <<= 1
bord2 = 0
lifeBit.times{|bit|
bord2 |= Rule[bord & 7] << bit
bord >>= 1
}
bord = bord2
break if bords[bord]
bords[bord] = true
}