ProofOfProgramsProject/test_min_game.ml

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;
()