From 77f6ec5c5edca11ae00b6f4d75e2b22c10564ab2 Mon Sep 17 00:00:00 2001 From: Alexandre Date: Mon, 11 Nov 2024 19:02:00 +0100 Subject: [PATCH] --- --- entrees.txt | 43 +++++----- iachallenge2024_bomberman_tkinter.py | 2 +- main | Bin 229964 -> 231154 bytes main.cmi | Bin 8684 -> 9462 bytes main.cmo | Bin 31481 -> 32972 bytes main.ml | 121 +++++++++++++++++++-------- main_0.sav | 2 +- main_1.sav | 2 +- main_3.sav | 2 +- sortie.txt | 1 - 10 files changed, 109 insertions(+), 64 deletions(-) diff --git a/entrees.txt b/entrees.txt index 8d08c5e..5145141 100644 --- a/entrees.txt +++ b/entrees.txt @@ -1,27 +1,24 @@ -59.33000000000001 -0 +182.62000000000037 +2 13 21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 3 3 0 2 2 2 2 2 2 2 2 2 2 0 5 5 5 5 1 -1 0 1 3 1 2 1 2 1 2 1 2 1 2 1 2 1 5 1 5 1 -1 3 3 3 0 2 2 2 2 2 2 2 2 0 2 0 0 5 5 5 1 -1 3 1 3 1 2 1 2 1 2 1 2 1 2 1 2 1 0 1 5 1 -1 3 3 3 0 2 2 2 2 2 2 2 2 2 2 0 0 2 2 0 1 -1 0 1 3 1 2 1 2 1 2 1 0 1 2 1 2 1 2 1 0 1 -1 0 3 3 3 0 0 2 0 2 2 2 2 2 2 2 2 2 0 4 1 -1 6 1 6 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 4 1 -1 6 6 6 0 0 2 2 0 2 2 2 0 2 0 0 2 0 0 4 1 -1 6 1 6 1 2 1 0 1 2 1 2 1 2 1 2 1 4 1 4 1 -1 6 6 6 6 0 2 2 2 2 2 2 2 2 2 2 0 4 4 4 1 +1 3 3 3 3 3 3 3 3 3 2 0 0 5 5 5 5 5 5 5 1 +1 3 1 3 1 3 1 0 1 0 1 2 1 0 1 5 1 5 1 5 1 +1 3 3 3 3 3 3 3 2 3 2 2 2 2 5 5 5 5 5 5 1 +1 3 1 3 1 3 1 3 1 3 1 2 1 2 1 5 1 5 1 5 1 +1 3 0 3 3 3 3 3 3 3 3 3 0 2 0 5 5 5 5 5 1 +1 0 1 0 1 3 1 3 1 3 1 4 1 0 1 5 1 5 1 2 1 +1 0 0 6 6 3 3 3 3 3 0 4 0 5 5 5 5 5 4 4 1 +1 0 1 6 1 6 1 3 1 3 1 4 1 4 1 5 1 4 1 4 1 +1 6 6 6 6 6 6 4 4 3 4 4 4 4 4 4 4 4 5 4 1 +1 6 1 6 1 6 1 6 1 3 1 4 1 4 1 5 1 4 1 4 1 +1 6 6 6 6 6 6 6 0 3 4 4 4 4 4 4 4 4 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -3 -4 17 3 59.5 -9 17 1 60.5 -5 4 2 62.400000000000006 -4 -6 3 0 2 2 2 0 1 -8 19 1 0 1 1 1 0 -4 19 2 0 2 3 0 0 -5 3 3 0 2 4 0 1 +2 +6 11 2 185.56136399999963 +9 13 4 186.85000000000056 +2 +8 13 1 2 3 4 1 3 +7 15 2 2 3 2 1 1 1 -6 19 2 +2 9 1 diff --git a/iachallenge2024_bomberman_tkinter.py b/iachallenge2024_bomberman_tkinter.py index a2f5c5d..155b976 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(["./main", "./main","./main", "./main"]) +simulation(["./main", "./main", "./main", "./main"]) diff --git a/main b/main index fdfbe4513dae4c9f24fc2e06f522fd5c395870ce..ef1fc65cda517f559142a4f80fe48236f5e6ba47 100755 GIT binary patch delta 2627 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 delta 3388 zcmZvee^6A{702JX``!Y971(uIV3plvMJ0lOtGFPA1=3(jFwq)NF)YinAc=qi8jK_) z2GOWd$f+@Etv}L9YSJ1LVvNz4C9yGWXN;P*NykpDbWCiE6Wjdwr_*fjd%O4D`$zxS znRCAPoX#`tTas*lqQAybr!{@W zKmoM5c|_dCV*6nw%o2(?_4rhgGBDG!n@g{k+KBs0Jhp z0S>f74y?vXaFd7&+h87vIPn174-ey);3Sb5m_Qbgh#P&RghaA&Gg$&n_*>$FIXFo? za5p*)UdY9jhH{vVFB-~7WETF>P)s5-af-ZqX&kK419#rOAS~UHTpcmqV;;{rZy-v`JaJDfYTCv{fHq8@s4-OlP zAcXH2v!N2N87sku)8m$8{6L5)7wifgiYtdQ{4lQ4R4V9;Fg4x>CAciU+O$y6y?89X z0*Y}WzREOT&=+7)!U|}^9SO^!8m}k#pbDLLoyu]J&>TmXPj`HVkJ3tr?q>GjaoZdW&uab*ojkLU=5BVcL2Iza)U#)ZP-? z_0Tn#oZ>C&VWF}R+My17jvzduXFZDjDRb?;T9(|*p6^=PxNK0fzQeOt7fz&jp%3k; zc37uXU9ac&U_)xDZ9}x`h(atvm0m5jPmkSzAE%bXMvOCOdo~Jjj|p}^J!@Hlze&%2 z99Nr5;4yr`?DlLHA_fHe37Re5r6=|5L7X%f`1)ggzU1!c>Z{ZfrKi;W#;ccwKYi)x zShBQ*8PA~K;w{+3HftE-gdsJ#pZi-`&M^MQ;+^}rp0kg~Y@^*?;O=&o@+{7q>Ycke zmLebKAv@G6KJM>iDZB9CRBzgVUgaE*c@7<^)dug!=L*su6lhQ{F}a0TGScjf`~oxfG2=zNX)VrwlGXZ}Q})xn|CPH3SjIuD zOy}t0@bHya(UCsg`5G5~$<1Fe z(g|FhzHrGiEPV+Nd7X~RPCJk@wKjVA%1Lg%!Ob@ratv>zSCtP%kt2${oyWYzhPj(- zrWUh*~yvYz|YwfZfH|5+*BuK zD8@5cGl-ml*R!&nD*(QLni{C7rDaw!XSr5p4M}z7Gskn&c4oO2hj;D8oM6- zjvO%HR)@>4^aDwPy8Tdhh_W{^=eWk+4$@!LE#z%j*Ba=fo9OEa^ntvcRm$U)zF?JH z(Mma5rH!aKXF@6FIbAMgKad`1>VT$BTIm3DHffcPgY+Nla@sPVWo-U6C*7t4AqViV zGks8b703WIPeSt@3VAK&1SAdeE`X%AThJP6+0gE94|In7wC@1OI~cWzcYH^s3ithA z>=gXlcapNt0vUwBDhM=D=UmJg40LLheg{C*N;9K1K;B6|oD|Z@>0fJ*i$JzQ%l8l@ z6!I~1;x)!+0J6%M)f(t(5B2ndyi0{ZwK_Sd(&i`J!*5hJo^qx6lxskSAvha?d6fER z=6E#fKLHe#n$sTW=%UQ$G^X|rq5ytLp`+Nz=UTE!y)`75Mq!WocTU3NG1t3mE(^b diff --git a/main.cmo b/main.cmo index 8003efc17dfaa5894bfb256d4f04d9b7a0d2b195..5b66a00258a8f783caf38af843acc6775caf8f4b 100644 GIT binary patch delta 8830 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 E0KV%I#Q*>R diff --git a/main.ml b/main.ml index dd079aa..c39c49b 100755 --- a/main.ml +++ b/main.ml @@ -476,6 +476,53 @@ let has_a_safe_path_origin (cx0 : int) (cy0 : int) (lines : int) (cols : int) (s with | ReturnInt b -> b ;; +let has_a_safe_path_origin_2 (cx0 : int) (cy0 : int) (lines : int) (cols : int) (simt : float) (interval : float) (gd : game_data) (dgs : danger array array) (white_dgs : danger array) (white_gd : int array) (black_dgs : danger array) (black_gd : int array) (maxdepth : int) = + (* + core function + performs a BFS starting at (cx0, cy0), avoiding anything in blacklists and halting upon stepping on a whitelisted element + *) + let visited = Hashtbl.create 100 in + let q = Queue.create () in + + Hashtbl.add visited (cx0, cy0) 1 ; + + + Queue.add (cx0+1, cy0, simt +. interval, 2) q ; + Queue.add (cx0-1, cy0, simt +. interval, 0) q ; + Queue.add (cx0, cy0+1, simt +. interval, 1) q ; + Queue.add (cx0, cy0-1, simt +. interval, 3) q ; + + if debug_all then Printf.fprintf stderr "[escape] Attempt 1/1...\n" ; + try + while not (Queue.is_empty q) do + let (cx, cy, cur_t, direct) = Queue.pop q in + + if (Hashtbl.find_opt visited (cx, cy) = None && is_valid cx cy lines cols && level_of_danger dgs.(cx).(cy) >= cur_t) then begin + Hashtbl.add visited (cx, cy) 1 ; + if cur_t > simt +. (float_of_int maxdepth) *. interval then (* too deep *) + raise (ReturnInt 4) + else if Array.mem dgs.(cx).(cy) white_dgs then + raise (ReturnInt direct) + else if Array.mem gd.laby.(cx).(cy) white_gd then + raise (ReturnInt direct) + else if Array.mem dgs.(cx).(cy) black_dgs then + () + else if Array.mem gd.laby.(cx).(cy) black_gd then + () + else begin + for dir = 0 to 3 do + let newx = cx + fst order.(dir) + and newy = cy + snd order.(dir) + and newt = cur_t +. interval in + Queue.add (newx, newy, newt, direct) q + done + end + end + done; + 4 + with + | ReturnInt b -> b ;; + (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) @@ -504,14 +551,15 @@ let move_safe (gd : game_data) (dgs : danger array array) = end; (*let result = has_a_safe_path (cx) (cy) gd.dt in*) - let result = has_a_safe_path_origin cx cy lines cols gd.dt interval gd dgs [|Bonus|] [||] [|Blocked|] [||] 20 in + let result = has_a_safe_path_origin_2 cx cy lines cols gd.dt interval gd dgs [|Bonus|] [||] [|Blocked|] [||] 20 in if result <> 4 then result else begin - let result2 = has_a_safe_path_origin cx cy lines cols gd.dt interval gd dgs [|Safe|] [||] [|Blocked|] [||] 80 in + let result2 = has_a_safe_path_origin_2 cx cy lines cols gd.dt interval gd dgs [|Safe|] [||] [|Blocked|] [||] 80 in if result2 <> 4 then result2 else begin (* you're probably dead if the code reaches here... *) if debug_all then Printf.fprintf stderr "[escape] Attempt F...\n"; + Printf.fprintf stderr "well shit\n" ; 4 end end @@ -521,6 +569,34 @@ let move_safe (gd : game_data) (dgs : danger array array) = (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) (* ---------------------------------------------------------------------------------------------------------------------------------------------------- *) +let is_a_crate_nearby (gd : game_data) (dgs : danger array array) = + let pid = gd.player_id + and lines = Array.length gd.laby + and cols = Array.length gd.laby.(0) in + try + let halt = ref false in + let res = ref false in + for dir = 0 to 3 do + for o = 1 to gd.players.(pid).bomb_radius do + if not !halt then begin + let nx = gd.players.(pid).xy.x + o * (fst order.(dir)) + and ny = gd.players.(pid).xy.y + o * (snd order.(dir)) in + if is_valid nx ny lines cols then begin + if gd.laby.(nx).(ny) = 2 then + res := true + else if gd.laby.(nx).(ny) = 1 then + halt := true + else if dgs.(nx).(ny) = Bonus then + raise (ReturnBool false) + end + end + done; + halt := false ; + done; + !res + with + | ReturnBool b -> b ;; + let move_explore (gd: game_data) (dgs : danger array array) = (* destroy crates *) let pid = gd.player_id in @@ -534,13 +610,13 @@ let move_explore (gd: game_data) (dgs : danger array array) = let (cxi, cyi) = (gd.players.(pid).xy.x, gd.players.(pid).xy.y) in let move_with_caution (exit : bool) = - let res = has_a_safe_path_origin cxi cyi lines cols gd.dt interval gd dgs [|Bonus|] [||] [|Blocked|] [||] 5 in + let res = has_a_safe_path_origin_2 cxi cyi lines cols gd.dt interval gd dgs [|Bonus|] [||] [|Blocked|] [||] 5 in if res <> 4 then begin if debug_all then Printf.fprintf stderr "[crates] success 1/2!\n" ; res end else begin - let res2 = has_a_safe_path_origin cxi cyi lines cols gd.dt interval gd dgs [||] [|2|] [|Blocked|] [||] 80 in + let res2 = has_a_safe_path_origin_2 cxi cyi lines cols gd.dt interval gd dgs [||] [|2|] [|Blocked|] [||] 80 in if res2 <> 4 then begin if debug_all then Printf.fprintf stderr "[crates] success 2/2!\n" ; res2 @@ -560,7 +636,7 @@ let move_explore (gd: game_data) (dgs : danger array array) = let saved_dgs = Hashtbl.create (4 * (bsize +1)) in for dir = 0 to 3 do for w = 0 to bsize do - Hashtbl.add bomb_hash (bx + w*(fst order.(dir)), by + w*(snd order.(dir))) (Danger 5.5) ; + Hashtbl.add bomb_hash (bx + w*(fst order.(dir)), by + w*(snd order.(dir))) (Danger (gd.dt +. 5.5)) ; done done; Hashtbl.iter @@ -577,40 +653,13 @@ let move_explore (gd: game_data) (dgs : danger array array) = in (* 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 *) - if gd.players.(pid).nbomb_atonce > 0 then begin + if is_a_crate_nearby gd dgs && (safe_path_with_bomb cxi cyi gd.players.(pid).bomb_radius <> 4) then begin (* Crate at South *) + if dgs.(cxi).(cyi) = Safe && gd.players.(pid).nbomb_atonce > 0 then begin current_status := EscapeDeath ; action := 1; if debug_all then Printf.fprintf stderr "Fire in the hole!\n" ; + raise (ReturnInt 4) ; 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 *) - if gd.players.(pid).nbomb_atonce > 0 then begin - current_status := EscapeDeath ; - action := 1; - if debug_all then Printf.fprintf stderr "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 *) - if gd.players.(pid).nbomb_atonce > 0 then begin - current_status := EscapeDeath ; - action := 1; - if debug_all then Printf.fprintf stderr "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 *) - if gd.players.(pid).nbomb_atonce > 0 then begin - current_status := EscapeDeath ; - action := 1; - if debug_all then Printf.fprintf stderr "Fire in the hole!\n" ; - end; - raise (ReturnInt 4) ; end; if debug_all then Printf.fprintf stderr "[crates] Cannot bomb now, searching for a crate...\n"; @@ -625,7 +674,7 @@ 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 -> () + | Danger k -> current_status := EscapeDeath | Bonus -> () | Fatal k -> (* should not happen *) current_status := EscapeDeath | Blocked -> failwith "did you just suffocate the player ?" ;; diff --git a/main_0.sav b/main_0.sav index 56a6051..c227083 100644 --- a/main_0.sav +++ b/main_0.sav @@ -1 +1 @@ -1 \ No newline at end of file +0 \ No newline at end of file diff --git a/main_1.sav b/main_1.sav index 56a6051..c227083 100644 --- a/main_1.sav +++ b/main_1.sav @@ -1 +1 @@ -1 \ No newline at end of file +0 \ No newline at end of file diff --git a/main_3.sav b/main_3.sav index 56a6051..c227083 100644 --- a/main_3.sav +++ b/main_3.sav @@ -1 +1 @@ -1 \ No newline at end of file +0 \ No newline at end of file diff --git a/sortie.txt b/sortie.txt index 7cc0f37..e69de29 100644 --- a/sortie.txt +++ b/sortie.txt @@ -1 +0,0 @@ -4 0 \ No newline at end of file