From 0767b46821c708092741132a450a235db7b74d2f Mon Sep 17 00:00:00 2001 From: Alexandre Date: Sat, 9 Nov 2024 15:56:43 +0100 Subject: [PATCH] failsafe --- compil.sh | 2 +- entrees.txt | 22 ++++++ exec.sh | 4 +- iachallenge2024_bomberman_tkinter.py | 2 +- input_test.txt | 18 ++--- bin/main => main | Bin 227977 -> 229448 bytes main.cmi | Bin 6828 -> 7392 bytes main.cmo | Bin 28154 -> 0 bytes main.ml | 103 +++++++++++++++++++++------ main.sav | 1 + sortie.txt | 1 + 11 files changed, 120 insertions(+), 33 deletions(-) create mode 100644 entrees.txt rename bin/main => main (91%) delete mode 100644 main.cmo mode change 100644 => 100755 main.ml create mode 100644 main.sav create mode 100644 sortie.txt diff --git a/compil.sh b/compil.sh index e4b88a4..a5fbb7d 100644 --- a/compil.sh +++ b/compil.sh @@ -1 +1 @@ -ocamlc main.ml -o bin/main \ No newline at end of file +ocamlc main.ml -o main \ No newline at end of file diff --git a/entrees.txt b/entrees.txt new file mode 100644 index 0000000..b2c3b5d --- /dev/null +++ b/entrees.txt @@ -0,0 +1,22 @@ +11.0 +3 +13 21 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 3 3 2 2 2 2 2 0 2 2 0 2 2 2 2 2 2 5 5 1 +1 3 1 2 1 2 1 2 1 0 1 2 1 2 1 0 1 2 1 5 1 +1 0 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 0 2 1 +1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 +1 2 0 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 1 +1 2 1 2 1 2 1 0 1 2 1 2 1 2 1 2 1 2 1 2 1 +1 2 2 2 0 0 2 2 2 0 2 2 2 2 2 2 2 2 2 2 1 +1 2 1 2 1 2 1 0 1 2 1 2 1 2 1 2 1 2 1 2 1 +1 2 2 2 2 2 2 2 2 2 2 0 2 0 2 2 0 2 0 2 1 +1 0 1 2 1 0 1 2 1 0 1 2 1 2 1 2 1 2 1 0 1 +1 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 +11 19 1 11.5 +2 +11 19 1 0 1 1 0 0 +11 1 3 0 1 1 0 0 +0 diff --git a/exec.sh b/exec.sh index c04a152..eba9c6e 100644 --- a/exec.sh +++ b/exec.sh @@ -1,2 +1,2 @@ -ocamlc main.ml -o bin/main -./bin/main \ No newline at end of file +chmod u+x main.ml +./main.ml \ No newline at end of file diff --git a/iachallenge2024_bomberman_tkinter.py b/iachallenge2024_bomberman_tkinter.py index 40d031e..5341da7 100644 --- a/iachallenge2024_bomberman_tkinter.py +++ b/iachallenge2024_bomberman_tkinter.py @@ -379,4 +379,4 @@ def simulation(strategies): return from importlib import import_module -simulation(["./patient.py", "./aleatoire.py","./patient.py", "./aleatoire.py"]) +simulation(["./main.ml", "./main.ml","./main.ml", "./main.ml"]) diff --git a/input_test.txt b/input_test.txt index 1dd06c7..069c595 100644 --- a/input_test.txt +++ b/input_test.txt @@ -1,19 +1,19 @@ 3.7 0 7 11 -2 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 2 -0 0 0 0 0 0 0 0 0 0 0 -3 3 3 0 0 0 0 0 4 4 0 -0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 3 3 0 0 +0 0 2 2 2 2 2 2 2 0 0 +0 1 2 1 2 1 2 1 2 1 0 +2 2 2 2 2 2 2 0 2 2 2 +2 1 0 1 2 1 2 1 2 1 0 +2 2 2 2 2 2 2 2 2 2 2 +0 1 2 1 2 1 2 1 0 1 0 +0 0 2 2 2 2 2 2 2 0 0 3 3 2 4 4.1 -4 4 2 4.3 +0 1 2 3.9 8 6 3 5.5 5 -2 6 0 0 2 4 5 3 +1 0 0 0 2 4 5 3 2 0 1 4 3 2 2 2 10 5 2 0 2 3 2 3 5 5 3 5 1 10 2 3 diff --git a/bin/main b/main similarity index 91% rename from bin/main rename to main index 4387b05eabd7e5a6fb681c3ed745b120e3949500..2392f9ec287dba2d0684088c8f4a29aa4015cd86 100755 GIT binary patch delta 2729 zcmai03v84{5Wd}Q;VNxuYsHT-5v;u-W3&p@$KvL0SBta4sDSb!*+uDaxARd9n zpqPL(IwU4=8l#DvkRbX)qF@LKNO_4`QIsMmk0KNbwDkEq-`#(;Jq7;c%RF{wc4l^G z@7}r-b$Ctmni{cNUcWr#tyqg?ki}w|&UlEijv*NF3`=dpRY} zV>_EpV!D|ryoNEt81RAZ42Iv28oH!CHW=bxbyJ$Md!WV+3mH+pXbtoD1~NjkfDd*G zX5za?Ci!e*XXG$KW0;l1`Ahk{cL4I_2s=%^BCT}3OD2X7VDA}pHBC806m8IyV?qpT zusx3q zf+n`eL_N1jRtm9;8l8GsPag zwMAYPB8{5bWoqn`oWK&sD#koU91U!jB$BZW9j+XkylJ=dmI3-KL{ zIt!&j)X~6X-t?%xE?LbI;uzHpQHR8Fs!dU|JSVso3=6Ku6o!+5s~H@<=b6WK0U{X~ zLD=AGon&9=g2TqFf7mc&SpWV3>!*Ze@qYqfcG#~csoBg2?<|7;@PME{@_MkKT();o zX_B&eUS#$>1JB7j48_1$BjiuLT(Gs10U8YR0`tKXn6>ooNd(K$jE5OLBgK3M1A7!O zxSv`6Sr00U0?IzR!vE1Bxq3R2qDcHqhD&AErZmNbLwlO`JJf9P3k}fJ7vfji&*Lx7 zPy@(sWPtom4yRfm&cZU2b~#nNXrMXG(ne>U$|}y$B_~_`LEBQ5om?)ZiSsnw#W&;v zZE*2@`4ch8Pw>aM%z0T>n>v23$Mz_vv$A(p<3nVl!!Qsek{lzI!-IK6 zTqgr@`!hak3+y%6)M2l6rVg&K$1H;mV!#jgbs^iJX>IHP+HTSglXfzl%6hy9_&Ap2 zJXU23`((`h`c}i>TKsV_Ux?4Y<~{K}EqzNXVL6KCJgRJuB%0=_CQUc#5YruHy?M(p zqUj9p=D`mqq6e$T&phPeCe@gtDl~HQ%|JJ7rjCoSv|S5a75HF+oeYdt7cWAGEllSh9^@ferqzH)r}FgMZn*msJ>u~unQX1Uqsf<8=jnmvqOjQAu;fi83vV(Rt{;A z`liw9{gl|Fd>z(s3{Eo2XSG(Cv2n7P(W?3bcFi5vc{m1zL4!mA161 zqEf4_?&#NrdDwh;$Wy|xb3(K`>df3bAwsL2@l2=?Zsv_?-udmGQe9Y^6)$JVP z^;Ni?7g`5BRGH<7nmeJaQArks`hQl6vYl}h^ue!m!4 delta 1535 zcmZ8he@xV67{BLzV28&K&$_%*g5&If6L2?@pmfFkrDYp6EL};%LJ%`oG zKWaLC(tlv9(H}?Fw0h0TTx*L;(I}yWz*0-Y_;DTwiu&z&xbNAx+n)P8pU?aJeDA*B zp4N;vr_x*7;S)7>QPtRYPoyo@*`w+hKuC{VR_7FS(}==MJv^>n0QgWpGO6AII6#a} z9S*BTfRE+~HAhqxeKW2cdMu(gBUMZ)7uC&h+CdtaQDxAs7hYAP050;+s+Ck1Q4R{u zs`GK-j0pYL{}(D|SSY=DOMuU)%}}f9nOWBR4D|*a-m?ka@cE}Zu}0CW2KNpt+zfP7 z+`1%o;mg>l!^v0$@KtQoN-I7_!wMbxh!yLRDwEhPO~sxxI7WsO3u%=V9rS<;OQ_5A z9CRQH)2PdZE?Sn#@qI2V0{B)NOYjg-fr}INXQ5AzW#YR)FEZE6t9TeWvblMf9=+X- zYXQEeLpk^z{6ITBxR#>XeE#}f*bc`j)r$|q3EC*oOYeEP^hw&7%S)c3CV`)b1o}wl z;wJc6BFku99y;I`s?Ot+)6^o+PaS!<8U|=Ek6Uc;a*NV@9^p4>QAWM_ENsZ-uV=mJ zrKLW+69y$ElPZ1qF$@td=lZ|v>gBi{V3>X^U^+rf-L$3<-+{9

65CAGEay{pwHH zJrP_=2a7NV&e3=gX2SUxT!_J6G5A}+sh?bdhrzSOVzHF6U4$53GVvc1N2$z@HMz$P z!&ty!g>3TaW?s+u6k9u+l(4n0b}N!jhi@O;v{V?M)yMtIYg>0Vv`QZY{s-c#6e3q}$fx376jY z97ZsyGqm7Q@-*;sRNjEaI;#P_$t5A*j^~55IZrp*0=K-*?sWl=Ef8qm({+?9uHsHF zTP*4h9<#R-U|QD%u@>x8rvkft>l?RJ*S@rk-^Nk>YZEqE?T&K$Yu)=Yn$P4kPxoIs X8=~qK{6P8ZDW#QP4?D=$iaGxQjTe@X diff --git a/main.cmi b/main.cmi index bab3cd8df8476577b2af4a265bd78fd40b72f65a..1d5d1135233d6d9d282a7596c4be546866f7798d 100644 GIT binary patch literal 7392 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 diff --git a/main.cmo b/main.cmo deleted file mode 100644 index ae6037cdac5238a430fbc4595b9ab73645b036ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28154 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 b@g=Q^9P#GEouQ9S<_ZAF(M diff --git a/main.ml b/main.ml old mode 100644 new mode 100755 index a3c775f..3155149 --- a/main.ml +++ b/main.ml @@ -1,7 +1,9 @@ +#! /home/alexandre/.opam/myswitch/bin/ocaml (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) -let debug_all = true ;; +let debug_all = false ;; +let debug_data = false ;; let fatal_time = 1.0 ;; let explosion_time = 1.0 ;; @@ -178,6 +180,28 @@ let print_gain_map (map : int array array) = (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) +let get_meta_info () = + let ptr = open_in "main.sav" in + match (int_of_string (input_line ptr)) with + | 0 -> current_status := EscapeDeath + | 1 -> current_status := BlowUpCrates + | 2 -> current_status := ClaimLand + | 3 -> current_status := KillPlayers + | _ -> current_status := EscapeDeath ; + close_in ptr ;; + +let set_meta_info () = + let ptr = open_out "main.sav" in + match !current_status with + | EscapeDeath -> Printf.fprintf ptr "0" + | BlowUpCrates -> Printf.fprintf ptr "1" + | ClaimLand -> Printf.fprintf ptr "2" + | KillPlayers -> Printf.fprintf ptr "3" ; + close_out ptr ;; + +(* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) +(* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) + let int_of_string (str : string) = String.fold_right (fun ch acc -> let cd = Char.code ch in if cd >= 48 || cd <= 57 then 10*acc + cd - 48 else failwith "not an integer\n") str 0 ;; @@ -560,32 +584,40 @@ let move_explore (gd: game_data) (dgs : danger array array) = result in - (* check if there's a crate next to the player, and if upon placing a bomb it won't softlock the player *) + (* check if there's a crate next to the player, and if upon placing a bomb it won't softlock the player, and if you can place a bomb *) if is_valid (cxi+1) (cyi) lines cols && gd.laby.(cxi+1).(cyi) = 2 && (safe_path_with_bomb cxi cyi gd.players.(pid).bomb_radius <> 4) then begin (* Crate at South *) - current_status := EscapeDeath ; - action := 1; - if debug_all then Printf.printf "Fire in the hole!\n" ; + if gd.players.(pid).nbomb_atonce > 0 then begin + current_status := EscapeDeath ; + action := 1; + if debug_all then Printf.printf "Fire in the hole!\n" ; + end; raise (ReturnInt 4) ; end; if is_valid (cxi-1) (cyi) lines cols && gd.laby.(cxi-1).(cyi) = 2 && (safe_path_with_bomb cxi cyi gd.players.(pid).bomb_radius <> 4) then begin (* Crate at North *) - current_status := EscapeDeath ; - action := 1; - if debug_all then Printf.printf "Fire in the hole!\n" ; + if gd.players.(pid).nbomb_atonce > 0 then begin + current_status := EscapeDeath ; + action := 1; + if debug_all then Printf.printf "Fire in the hole!\n" ; + end; raise (ReturnInt 4) ; end; if is_valid (cxi) (cyi+1) lines cols && gd.laby.(cxi).(cyi+1) = 2 && (safe_path_with_bomb cxi cyi gd.players.(pid).bomb_radius <> 4) then begin (* Crate at East *) - current_status := EscapeDeath ; - action := 1; - if debug_all then Printf.printf "Fire in the hole!\n" ; + if gd.players.(pid).nbomb_atonce > 0 then begin + current_status := EscapeDeath ; + action := 1; + if debug_all then Printf.printf "Fire in the hole!\n" ; + end; raise (ReturnInt 4) ; end; if is_valid (cxi) (cyi-1) lines cols && gd.laby.(cxi).(cyi-1) = 2 && (safe_path_with_bomb cxi cyi gd.players.(pid).bomb_radius <> 4) then begin (* Crate at West *) - current_status := EscapeDeath ; - action := 1; - if debug_all then Printf.printf "Fire in the hole!\n" ; + if gd.players.(pid).nbomb_atonce > 0 then begin + current_status := EscapeDeath ; + action := 1; + if debug_all then Printf.printf "Fire in the hole!\n" ; + end; raise (ReturnInt 4) ; end; @@ -599,14 +631,45 @@ let move_explore (gd: game_data) (dgs : danger array array) = (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) +let update_strat (gd : game_data) (dgs : danger array array) = match dgs.(gd.players.(gd.player_id).xy.x).(gd.players.(gd.player_id).xy.y) with + | Safe -> () + | Danger k -> () + | Fatal k -> (* should not happen *) current_status := EscapeDeath + | Blocked -> failwith "did you just suffocate the player ?" ;; + +(* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) +(* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) + +get_meta_info () ;; + let game_d = parse_input "input_test.txt" ;; let dangers = evaluate_dangers game_d ;; let gains = cell_values game_d ;; -print_game_data game_d ;; -print_danger_levels dangers ;; -print_gain_map gains ;; +if debug_data then begin + print_game_data game_d ; + print_danger_levels dangers ; + print_gain_map gains ; +end ;; -Printf.printf "move at\n";; -print_direction (move_explore game_d dangers) ;; -Printf.printf "\n" ;; \ No newline at end of file +update_strat game_d dangers ;; + +let main_actions () = match !current_status with + | EscapeDeath -> + Printf.printf "%d " (move_safe game_d dangers) + | BlowUpCrates -> + if dangers.(game_d.players.(game_d.player_id).xy.x).(game_d.players.(game_d.player_id).xy.y) = Safe then + Printf.printf "%d " (move_explore game_d dangers) + else begin + current_status := EscapeDeath ; + Printf.printf "%d " (move_safe game_d dangers) + end + | ClaimLand -> + () + | KillPlayers -> + () ;; + +main_actions () ; +Printf.printf "%d" !action ; + +set_meta_info () ;; \ No newline at end of file diff --git a/main.sav b/main.sav new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/main.sav @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sortie.txt b/sortie.txt new file mode 100644 index 0000000..7cc0f37 --- /dev/null +++ b/sortie.txt @@ -0,0 +1 @@ +4 0 \ No newline at end of file