chiark / gitweb /
23a round 1 done
authorBen Harris <bjh21@bjh21.me.uk>
Sat, 8 Jun 2024 08:53:29 +0000 (09:53 +0100)
committerBen Harris <bjh21@bjh21.me.uk>
Sat, 8 Jun 2024 08:53:29 +0000 (09:53 +0100)
23/23a.bqn

index 142ad49a5f87aeb9d65f74c5cc6b2b44fa5571a5..93eb07ceceb99b2bdbd44296fc210324f48f1520 100644 (file)
@@ -1,19 +1,29 @@
 Prep←".#"⊸⊐∘>
 
-# Propose moving north if possible.
-ProposeN←{ ((1≠+´⥊𝕩)∧(0=+´⊏𝕩))/⟨[0‿1‿0,0‿0‿0,0‿0‿0]⟩ }
+self←[0‿0‿0,0‿1‿0,0‿0‿0]
+near←[1‿1‿1,1‿0‿1,1‿1‿1]
+n   ←[1‿1‿1,0‿0‿0,0‿0‿0]
+s   ←[0‿0‿0,0‿0‿0,1‿1‿1]
+e   ←[0‿0‿1,0‿0‿1,0‿0‿1]
+w   ←[1‿0‿0,1‿0‿0,1‿0‿0]
+Any←{∨´⥊𝕨∧𝕩}
 
-Propose←{𝕊in: # Given a map of local area, say where Elf in centre will go.
-  ⊑ (∾{𝕏⁼¨ ProposeN 𝕏 in}¨{⌽∘⍉⍟𝕩}¨⟨0,2,3,1⟩) ∾ ⟨[0‿0‿0,0‿1‿0,0‿0‿0]⟩
-}
+ProposeN←(Any⟜self)∧(Any⟜near)∧(¬Any⟜n)
+ProposeS←(Any⟜self)∧(Any⟜near)∧(Any⟜n)∧(¬Any⟜s)
+ProposeE←(Any⟜self)∧(Any⟜near)∧(Any⟜n)∧(Any⟜s)∧(¬Any⟜e)
+ProposeW←(Any⟜self)∧(Any⟜near)∧(Any⟜n)∧(Any⟜s)∧(Any⟜e)∧(¬Any⟜w)
+Propose0←(Any⟜self)∧(¬Any⟜near)∨(Any⟜n)∧(Any⟜s)∧(Any⟜e)∧(Any⟜w)
 
-# Same but propose empty array if there is no Elf.
-ProposeOr←{ (⟨1,1⟩⊑𝕩)∧Propose 𝕩 }
+Pad←{ »˘»(2+≢𝕩)↑𝕩 }
 
 Round←{𝕊map:
-  •Show map
-  ⟨h,w⟩←≢map ⋄ map↩»˘»(2+w)↑˘(2+h)↑map # Pad the map so windows work.
-  ⟨2,3,0,1⟩⍉ProposeOr⎉2⟨3,3⟩↕map
+  map Pad↩
+  proposers←⟨propose_n, propose_s, propose_e, propose_w, propose_0⟩
+  shifts←⟨«,»,»˘,«˘,⊢⟩ ⋄ unshifts←⟨»,«,«˘,»˘,⊢⟩
+  proposals←{ Pad 𝕏⎉2⟨3,3⟩↕map }¨proposers
+  collisions← 1<+´⥊ shifts { 𝕎 𝕩 }¨ proposals
+  stay← unshifts { 𝕩∧ 𝕎 collisions }¨ proposals
+  (∨´stay)∨(∨´ shifts { 𝕎 𝕩 }¨ proposals∧¬stay)
 }
 
 Main←Round⍟1