diff options
Diffstat (limited to 'users/sterni/exercises/aoc')
-rw-r--r-- | users/sterni/exercises/aoc/2022/21/21.bqn | 25 | ||||
-rw-r--r-- | users/sterni/exercises/aoc/lib.bqn | 1 |
2 files changed, 26 insertions, 0 deletions
diff --git a/users/sterni/exercises/aoc/2022/21/21.bqn b/users/sterni/exercises/aoc/2022/21/21.bqn new file mode 100644 index 000000000000..2f91f55d445e --- /dev/null +++ b/users/sterni/exercises/aoc/2022/21/21.bqn @@ -0,0 +1,25 @@ +⟨ImportBqnLibs, IsAsciiNum, ReadDec⟩ ← •Import "../../lib.bqn" +⟨ReplaceAll, Split⟩ ← ImportBqnLibs "strings.bqn" + +i ← ": "⊸Split¨ •FLines "input" +ReplaceInts ← { + 𝕊 𝕩: 𝕊´ 2↑(¬∘(∧´IsAsciiNum∘⊑∘⌽)¨⊔⊢) 𝕩; + # TODO: Efficient replace on tokens + is 𝕊 es: (((•Fmt⍟(0⊸≠•Type))¨⌾(1⊸⊑) <˘⍉>is)⊸ReplaceAll⌾(1⊸⊑))¨ es +} + +c ← 0 +CanEval ← (IsAsciiNum∨∊⟜"+-/* ") +Eval ← { + a‿s‿b ← " " Split 𝕩 + f ← ⊑+‿-‿×‿÷⊏˜"+-*/"⊐s + a F○ReadDec b +} +EvalExprs ← { + p‿e ← 2↑((∧´CanEval∘⊑∘⌽)¨⊔⊢) 𝕩 + ev ← (Eval⌾(⊑⌽))¨ e + c +↩1 + (⊑(⊑¨ev)∊˜<"root")◶⟨EvalExprs∘(ReplaceInts⟜p),1⊸⊑⊑⟩ ev +} + +•Show EvalExprs ReplaceInts i diff --git a/users/sterni/exercises/aoc/lib.bqn b/users/sterni/exercises/aoc/lib.bqn index 37c518d1fd61..e870a5dfa426 100644 --- a/users/sterni/exercises/aoc/lib.bqn +++ b/users/sterni/exercises/aoc/lib.bqn @@ -1,4 +1,5 @@ IsAsciiNum ⇐ ('0'⊸≤∧≤⟜'9') +IsAlpha ⇐ (('a'⊸≤∧≤⟜'z')∨('A'⊸≤∧≤⟜'Z')) # based on leah2's function ReadInt ⇐ { |