ofile := "/tmp/gol.jbv" ;; fun populate_grid(g:Moore, size_x:int, size_y:int) = ( for i = 0 to size_x do for j = 0 to size_y do g.(i * |E> + j * |N>) := random(2); g ) ;; S0 := populate_grid(Moore:(),100,100) ;; trans rules = { 0 as c / neighborsfold(add,0,c) == 3 => 1 ; 1 as c / let nb_ngh = neighborsfold(add,0,c) in nb_ngh != 3 && nb_ngh != 2 => 0 ; } ;; fun output(S) = ( ofile << " { " ; foreach c @ p in S do if c == 1 then let (x,y) = sequify(p) in ofile << " { " << x << " " << y << " 0 0 0 } " fi; ofile << " }\n" ; S ) ;; rules[iter = 200, prelude = output, interlude = output, postlude = output ](S0) ;;