83 lines
1.9 KiB
OCaml
83 lines
1.9 KiB
OCaml
|
|
open Format
|
|
|
|
let run msg f d =
|
|
let t = Unix.gettimeofday () in
|
|
let x = f d in
|
|
let t = Unix.gettimeofday () -. t in
|
|
printf "@[[%2.2f] %s(%d): %a@]@." t msg d Z.pp_print x
|
|
|
|
let z = Z.of_int
|
|
|
|
(* pseudo-random arrays as test *)
|
|
let random_array size =
|
|
let () = Random.init 2024 in
|
|
Array.init size (fun _ -> z (Random.int 2024 - 1000))
|
|
|
|
open MinGameExtract
|
|
|
|
let random_config size : config = {
|
|
stack = random_array size;
|
|
pos = z 0;
|
|
turn = Alice;
|
|
score_alice = z 0;
|
|
score_bob = z 0;
|
|
}
|
|
|
|
let () =
|
|
(* testing alpha-beta *)
|
|
let f d = MinGameExtract.alpha_beta None None (random_config d) (z d) in
|
|
run "alpha_beta" f 0;
|
|
run "alpha_beta" f 1;
|
|
run "alpha_beta" f 2;
|
|
run "alpha_beta" f 3;
|
|
run "alpha_beta" f 5;
|
|
run "alpha_beta" f 10;
|
|
run "alpha_beta" f 15;
|
|
run "alpha_beta" f 20;
|
|
run "alpha_beta" f 25;
|
|
run "alpha_beta" f 30;
|
|
run "alpha_beta" f 35;
|
|
(* comment some of the tests below if it takes too long time *)
|
|
run "alpha_beta" f 40;
|
|
run "alpha_beta" f 41;
|
|
run "alpha_beta" f 42;
|
|
run "alpha_beta" f 43;
|
|
run "alpha_beta" f 44;
|
|
run "alpha_beta" f 45;
|
|
run "alpha_beta" f 46;
|
|
run "alpha_beta" f 47;
|
|
run "alpha_beta" f 48;
|
|
run "alpha_beta" f 49;
|
|
run "alpha_beta" f 50;
|
|
run "alpha_beta" f 51;
|
|
(* testing dynamic programming *)
|
|
let h d = MinGameExtract.dynamic (random_array d) in
|
|
run "dynamic" h 0;
|
|
run "dynamic" h 1;
|
|
run "dynamic" h 2;
|
|
run "dynamic" h 3;
|
|
run "dynamic" h 5;
|
|
run "dynamic" h 10;
|
|
run "dynamic" h 15;
|
|
run "dynamic" h 20;
|
|
run "dynamic" h 25;
|
|
run "dynamic" h 30;
|
|
run "dynamic" h 35;
|
|
run "dynamic" h 40;
|
|
run "dynamic" h 41;
|
|
run "dynamic" h 42;
|
|
run "dynamic" h 43;
|
|
run "dynamic" h 44;
|
|
run "dynamic" h 45;
|
|
run "dynamic" h 46;
|
|
run "dynamic" h 47;
|
|
run "dynamic" h 48;
|
|
run "dynamic" h 49;
|
|
run "dynamic" h 50;
|
|
run "dynamic" h 51;
|
|
run "dynamic" h 100;
|
|
run "dynamic" h 1024;
|
|
run "dynamic" h 2024;
|
|
()
|