about summary refs log tree commit diff
path: root/users/sterni/exercises/aoc/2022/09/9.bqn
⟨SplitOn,ReadDec⟩ ← •Import "../../lib.bqn"
i ← ReadDec⌾(1⊸⊑)¨ (<' ')⊸SplitOn¨ •FLines "input"

UnitDelta ← (⊢÷(|+0⊸=))
ExpandStep ← {
  𝕊 "L"‿l: 𝕊 (-l)‿0;
  𝕊 "R"‿r: 𝕊 r‿0;
  𝕊 "U"‿u: 𝕊 0‿u;
  𝕊 "D"‿d: 𝕊 0‿(-d);
  𝕊 delta: ((⌈´|)⥊<∘UnitDelta) delta
}

Step ← {knots 𝕊 delta: {h 𝕊 t: (UnitDelta h-t) +⍟(1<⌈´|h-t) t}` (delta⊸+)⌾⊑ knots}
Visited ← {+´0=⊒(¯1⊸⊑)¨(<𝕨⥊<0‿0) Step` ∾ExpandStep¨ 𝕩}

•Out "day09.1: "∾•Fmt  2 Visited i
•Out "day09.2: "∾•Fmt 10 Visited i