1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
(***********************************************************************)
(* *)
(* Objective Caml *)
(* *)
(* Pierre Weis, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 2001 Institut National de Recherche en Informatique et *)
(* en Automatique. All rights reserved. This file is distributed *)
(* only by permission. *)
(* *)
(***********************************************************************)
(* $Id: soli_opt.ml,v 1.1.1.1 2002/05/28 15:59:15 weis Exp $ *)
let nb_pegs = 33;;
let positions = Array.init nb_pegs (fun i -> Hashtbl.create (3 * i));;
let add_position rank pos k =
Hashtbl.add positions.(rank) pos k;;
let find_position rank pos =
Hashtbl.find positions.(rank) pos;;
let position_seen rank pos =
Hashtbl.mem positions.(rank) pos;;
let current_position n m = n, m;;
let alarm r =
if r mod 500 = 0 then begin
print_newline ();
print_string "Recorded positions: ";
print_int r;
end;;
let record_pos =
let count = ref 0 in
(fun rank ->
add_position rank (current_position ()) !count;
incr count;
alarm !count);;
let print_peg = function
| 0 -> print_string " "
| _ -> print_string "$";;
let print_board board =
for i = 0 to 8 do
for j = 0 to 8 do
print_peg board.(i).(j)
done;
print_newline()
done;;
|