global celln[] cell[] .
len map[] 8
# 
proc evolve . .
   for i = 1 to len cell[]
      ind = 0
      for j = i + 1 downto i - 1
         ind = ind * 2 + cell[j mod1 len cell[]]
      .
      celln[i] = map[ind + 1]
   .
   swap celln[] cell[]
.
proc show . .
   c$[] = [ "." "#" ]
   for v in cell[]
      write c$[v + 1]
   .
   print ""
.
proc run map count inp[] . .
   for i to 8
      map[i] = map mod 2
      map = map div 2
   .
   swap cell[] inp[]
   len celln[] len cell[]
   show
   for i to count
      evolve
      show
   .
   print ""
.
run 104 9 [ 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 ]
run 90 9 [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ]
run 122 15 [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ]
