let print_forest forest =
+ term_reset ();
+
Array.iter
(
fun row ->
let neighbors = List.map (fun (ox, oy) -> ox + ix, oy + iy) offsets in
let neighbors = List.filter (is_onside width height) neighbors in
let neighbor_states = List.map (fun (x, y) -> forest.(y).(x)) neighbors in
- let burning_states = List.filter (fun s -> s == Burning) neighbor_states in
+ let burning_states = List.filter ((==) Burning) neighbor_states in
new_state (state, (List.length burning_states), prob)
)
row
let rec burn forest size prob interval =
- term_reset ();
print_forest forest;
- minisleep interval;
- burn (next_generation forest size prob) size prob interval
+
+ if interval > 0.0 then minisleep interval;
+
+ let next_forest = next_generation forest size prob in
+ burn next_forest size prob interval
let main argv =
let forest = init_forest opts.size opts.prob in
term_clear ();
+
burn forest opts.size opts.prob opts.interval