From: Ben Harris Date: Fri, 14 Jun 2024 08:18:06 +0000 (+0100) Subject: 23b done X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~bjharris/git?a=commitdiff_plain;h=03db79139e004592d8fa64171b4982f71b6b6b72;p=aoc-2022.git 23b done --- diff --git a/23/23b.bqn b/23/23b.bqn new file mode 100644 index 0000000..8b5a1ac --- /dev/null +++ b/23/23b.bqn @@ -0,0 +1,50 @@ +Prep←".#"⊸⊐∘> + +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] +w ←[1‿0‿0,1‿0‿0,1‿0‿0] +e ←[0‿0‿1,0‿0‿1,0‿0‿1] +none←[0‿0‿0,0‿0‿0,0‿0‿0] +Any←{∨´⥊𝕨∧𝕩} + +Propose←{⟨inc, ex⟩ 𝕊 𝕩:(∧´(𝕩⊸Any)¨⟨self,near⟩∾inc)∧(¬𝕩 Any ex)} +cycle ← >{{1↓↑𝕩}⌾(𝕩⊸⌽)⟨n,s,w,e⟩}¨↕4 +MkProposer←{⟨¯1↓𝕩,¯1⊑𝕩⟩⊸Propose} +⟨propose_n,propose_s,propose_w,propose_e⟩←MkProposer¨⊏cycle +propose_0a←MkProposer⟨n,s,w,e,none⟩ # Not moving because many neighbours +Propose_0b←≡⟜self # Not moving because alone +Propose_0←Propose_0a∨Propose_0b + +Turn←{ 𝕤 + cycle ↩ 1⌽cycle + ⟨propose_n,propose_s,propose_w,propose_e⟩↩MkProposer¨⊏cycle +} + +Pad←{ »˘»(2+≢𝕩)↑𝕩 } +Trim1←{ (∨`∨´˘𝕩)/𝕩 } # Trim empty rows from north edge +Trim←{ Trim1 Trim1⌾⍉ Trim1⌾⌽ Trim1⌾(⌽∘⍉) 𝕩 } # Trim all round + +Round←{𝕊map: + map Pad↩ + proposers←⟨propose_n, propose_s, propose_w, propose_e, propose_0⟩ + shifts←⟨«,»,«˘,»˘,⊢⟩ ⋄ unshifts←⟨»,«,»˘,«˘,⊢⟩ + proposals←{ Pad 𝕏⎉2⟨3,3⟩↕map }¨proposers + collisions← 1<+´⥊ shifts { 𝕎 𝕩 }¨ proposals + stay← unshifts { 𝕩∧ 𝕎 collisions }¨ proposals + map↩(∨´stay)∨(∨´ shifts { 𝕎 𝕩 }¨ proposals∧¬stay) + Turn @ + Trim map +} + +Main←{ + ⟨i,·,·⟩←{ + 𝕊⟨i,this,prev⟩:⟨i+1,Round this,this⟩ + } •_while_ { + 𝕊⟨·,this,prev⟩:this≢prev + } ⟨0,𝕩,@⟩ + i +} + +•Show Main Prep •file.Lines ⊑•args