diff options
author | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-11-10 11:47:53 +0100 |
---|---|---|
committer | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-11-10 11:47:53 +0100 |
commit | 053f2090ebccd14f875b806c578e0f5467d68f5a (patch) | |
tree | 8850247e9f5b662d73edda57d6c43098958eb2c4 /morpion_rec/AmaneSuzuha | |
parent | 5900fdb76595b2eb9bf3168cd3ac84d7c52bad0c (diff) | |
download | CompetIA-053f2090ebccd14f875b806c578e0f5467d68f5a.tar.gz CompetIA-053f2090ebccd14f875b806c578e0f5467d68f5a.zip |
Add Amane Suzuha, a minimal IA.
Diffstat (limited to 'morpion_rec/AmaneSuzuha')
-rw-r--r-- | morpion_rec/AmaneSuzuha/_tags | 2 | ||||
-rw-r--r-- | morpion_rec/AmaneSuzuha/amane.ml | 41 | ||||
l--------- | morpion_rec/AmaneSuzuha/lib | 1 |
3 files changed, 44 insertions, 0 deletions
diff --git a/morpion_rec/AmaneSuzuha/_tags b/morpion_rec/AmaneSuzuha/_tags new file mode 100644 index 0000000..c653205 --- /dev/null +++ b/morpion_rec/AmaneSuzuha/_tags @@ -0,0 +1,2 @@ +"lib": include +true: use_unix, use_graphics diff --git a/morpion_rec/AmaneSuzuha/amane.ml b/morpion_rec/AmaneSuzuha/amane.ml new file mode 100644 index 0000000..f96859b --- /dev/null +++ b/morpion_rec/AmaneSuzuha/amane.ml @@ -0,0 +1,41 @@ + +module Amane : Player.IA = struct + + module G = Morpion_rec.G + open Core + + let take_random cc = + List.nth cc + (Random.int (List.length cc)) + + let won_game g = match G.s g with Won _ -> true | _ -> false + + let play g = + let cc = G.possibilities g in + match List.partition + (fun act -> won_game (G.play g act)) + cc + with + | win::_, _ -> win + | [], other -> + let o' = List.filter + (fun act -> + let g' = G.play g act in + let adv_win = + G.possibilities g' + |> List.map (G.play g') + |> List.exists won_game + in not adv_win) + other + in match o', other with + | x::_, _ -> x + | _, a::_ -> a + | _ -> assert false + +end + +module P = Player.P(Amane) + +let () = + Random.self_init(); + P.run() diff --git a/morpion_rec/AmaneSuzuha/lib b/morpion_rec/AmaneSuzuha/lib new file mode 120000 index 0000000..e834a2a --- /dev/null +++ b/morpion_rec/AmaneSuzuha/lib @@ -0,0 +1 @@ +../../judge
\ No newline at end of file |