about summary refs log tree commit diff
path: root/users/sterni/exercises/aoc/2022/18/18.bqn
blob: 76ec569fed416800140d68e2e06700445fb7873d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
lib ← •Import "../../lib.bqn"

i ← (lib.ReadDec¨(<',')⊸lib.SplitOn)¨ •FLines "input"
dim ← 1+⌈´i
cubes ← i∊˜↕dim

views ← ⟨0‿1‿2, 1‿2‿0, 2‿0‿1⟩
Exposed ← {(6×+´⥊𝕩)-2×+´views{+´⥊(∧˝˘)2↕𝕨⍉𝕩}¨<𝕩}
Interior ← {(¬𝕩)∧´views{((lib.Xor`∘((∊∧⊢)∨»∘(∊⌾⌽∧⊢)))⎉1)⌾(𝕨⊸⍉)𝕩}¨<𝕩}
Displace ← {⌈´(⥊⊢‿⌽⋈⌜views){F‿a 𝕊 𝕩:((-∘¬∘(»((0⊸=⊣)∧>)⊢)⌈⊢)⎉1)⌾(F a⊸⍉)𝕩}¨<𝕩}
Exterior ← (⊢-○Exposed ¯1⊸=∘(Displace lib._fix)∘(-∘Interior+⊢))

•Out "day18.1: "∾•Fmt Exposed cubes
•Out "day18.2: "∾•Fmt Exterior cubes