feat(sterni/aoc/2022): day11 BQN solution
Change-Id: If9c510e3530ecc1acafa1d708eacf64eb1132db7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7583 Reviewed-by: sterni <sternenseemann@systemli.org> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
This commit is contained in:
parent
fc31f93eb5
commit
867210f084
2 changed files with 48 additions and 0 deletions
41
users/sterni/exercises/aoc/2022/11/11.bqn
Normal file
41
users/sterni/exercises/aoc/2022/11/11.bqn
Normal file
|
@ -0,0 +1,41 @@
|
|||
# needs export BQNLIBS=/path/to/mlochbaum/bqn-libs
|
||||
⟨Split⟩ ← •Import "/strings.bqn"∾˜¯1↓1⊑•SH "printenv"‿"BQNLIBS"
|
||||
⟨ReadDec⟩ ← •Import "../../lib.bqn"
|
||||
MakeOp ← {
|
||||
𝕊 a‿"+"‿b: 𝕊 a‿+‿b;
|
||||
𝕊 a‿"*"‿b: 𝕊 a‿×‿b;
|
||||
𝕊 a‿op‿b:
|
||||
is‿xs ← (<"old") (≡¨⊔⊢) a‿b
|
||||
{op´ (𝕩⋆≠xs) ∾ReadDec¨ is}
|
||||
}
|
||||
ParseMonkey ← {
|
||||
·‿items‿op‿if‿then‿else:
|
||||
{
|
||||
initial ⇐ ReadDec¨ ", " Split 18↓items
|
||||
op ⇐ MakeOp " " Split 19↓op
|
||||
if ⇐ ReadDec 21↓if
|
||||
then ⇐ ReadDec 29↓then
|
||||
else ⇐ ReadDec 30↓else
|
||||
}
|
||||
}
|
||||
monkeys ← ParseMonkey¨ 1↓' '((+`(≠⟜⊑)¨)⊔⊢)0(≠⟜≠¨/⊢)•FLines "input"
|
||||
items ← {𝕩.initial}¨ monkeys
|
||||
lim ← ×´{𝕩.if}¨ monkeys
|
||||
|
||||
Sim ← {
|
||||
div 𝕊 len:
|
||||
Turn ← {
|
||||
items 𝕊 turnidx:
|
||||
i ← (≠monkeys)|turnidx
|
||||
m ← i⊑monkeys
|
||||
|
||||
worry ← lim|⌊div÷˜ m.Op¨ i⊑items
|
||||
else‿then ← 2↑0 (=⟜(m.if⊸|)⊔⊢) worry
|
||||
|
||||
⟨then, else⟩⊸(∾˜¨)⌾(m.then‿m.else⊸⊏) ⟨⟩˙⌾(i⊸⊑) items
|
||||
}
|
||||
×´2↑∨+˝(<items) ((≠⊑)⊸(>((↕⊣)=|)¨)×(≠¨˘)∘>∘(⊣»Turn`)) ↕len×≠items
|
||||
}
|
||||
|
||||
•Out "day11.1: "∾•Fmt 3 Sim 20
|
||||
•Out "day11.2: "∾•Fmt 1 Sim 10000
|
|
@ -15,6 +15,13 @@ depot.nix.readTree.drvTargets {
|
|||
ngn-k
|
||||
depot.tvix.eval
|
||||
];
|
||||
|
||||
BQNLIBS = pkgs.fetchFromGitHub {
|
||||
owner = "mlochbaum";
|
||||
repo = "bqn-libs";
|
||||
rev = "d56d8ea0b8c294fac7274678d9ab112553a03f42";
|
||||
sha256 = "1c1bkqj62v8m13jgaa32ridy0fk5iqysq5b2qwxbqxhky5zwnk9h";
|
||||
};
|
||||
};
|
||||
|
||||
bqn = pkgs.runCommand "bqn-aoc-2022"
|
||||
|
|
Loading…
Reference in a new issue