From: Ben Harris Date: Sat, 8 Jun 2024 08:53:29 +0000 (+0100) Subject: 23a round 1 done X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~bjharris/git?a=commitdiff_plain;h=27809ada9071d61a78a45a7d43ea732e03d5a171;p=aoc-2022.git 23a round 1 done --- diff --git a/23/23a.bqn b/23/23a.bqn index 142ad49..93eb07c 100644 --- a/23/23a.bqn +++ b/23/23a.bqn @@ -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