diff options
author | Leah Neukirchen <leah@vuxu.org> | 2021-12-19 17:21:15 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2021-12-19 17:21:15 +0100 |
commit | 63c07061a2dd1f4067ba215d41bb7254f1a29dba (patch) | |
tree | df48ef3a4503537fbde2009c40e0db0f9b456273 /day18.bqn | |
parent | 8ca091e841ae891bfd556cf55e519a1ccf014281 (diff) | |
download | adventofcode2021-63c07061a2dd1f4067ba215d41bb7254f1a29dba.tar.gz adventofcode2021-63c07061a2dd1f4067ba215d41bb7254f1a29dba.tar.xz adventofcode2021-63c07061a2dd1f4067ba215d41bb7254f1a29dba.zip |
day18
Diffstat (limited to 'day18.bqn')
-rw-r--r-- | day18.bqn | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/day18.bqn b/day18.bqn new file mode 100644 index 0000000..c469fa7 --- /dev/null +++ b/day18.bqn @@ -0,0 +1,27 @@ +d ← {•BQN ("⟨⟩"∾𝕩) ⊏˜ ("[]"∾𝕩) ⊐ 𝕩}¨•FLines"day18" + +Split ← { 𝕊 ⟨l,r⟩: { 𝕊 @: { 𝕊 @: @ ; 𝕊 r2: l‿r2 } Split r ; + 𝕊 l2: l2‿r } Split l ; + 𝕊 n: n ≥ 10 ? (⌊⋈⌈) n÷2 ; + @ } + +Addlm ← { n 𝕊 ⟨l,r⟩: ⟨n Addlm l, r⟩ ; n 𝕊 m : n + m } +Addrm ← { n 𝕊 ⟨l,r⟩: ⟨l, n Addrm r⟩ ; n 𝕊 m : n + m } + +Explode ← { + 4 𝕊 ⟨l,r⟩: 0‿l‿r ; + d 𝕊 ⟨l,r⟩: { 𝕊 @: { 𝕊 @: @ ; + 𝕊 ⟨r2,ln,rn⟩: ⟨ln Addrm l,r2⟩‿0‿rn } (d+1) Explode r ; + 𝕊 ⟨l2,ln,rn⟩: ⟨l2,rn Addlm r⟩‿ln‿0 } (d+1) Explode l ; + @ +} + +Reduce ← { 𝕊 t: { 𝕊 @: { 𝕊 @: t ; 𝕊 t3: Reduce t3 } Split t ; + 𝕊 t2: Reduce t2 } ⊑ 0 Explode t } + +Add ← Reduce∘⋈ + +Mag ← { 𝕊 ⟨l,r⟩: (3×Mag l)+(2×Mag r) ; 𝕊 n: n } + +•Show Mag Add˜´ ⌽ d +•Show ⌈´⥊Mag∘Add⌜˜ d |