28 lines
1,010 B
BQN
28 lines
1,010 B
BQN
⟨lf,Split,ToNats⟩←•Import"../bqn-libs/strings.bqn"
|
||
ms←>lf⊸Split¨(2⥊lf)Split ¯1⊸↓•FChars⊑•args
|
||
items←ToNats¨1⊑¨<˘ms
|
||
tests←{𝕊⟨d,t,f⟩: {(0=d|𝕩)⊑f‿t}}˘⊑¨ToNats¨3↓˘ms
|
||
op←{𝕩≡"* old" ? ט; 𝕩≡"+ old" ? +˜; '*'≡⊑𝕩 ? (⊑ToNats𝕩)⊸×; '+'≡⊑𝕩 ? (⊑ToNats𝕩)⊸+}¨23↓¨2⊏˘ms
|
||
mod←×´⊑¨ToNats¨3⊑¨<˘ms
|
||
|
||
MonkeyBusiness←{part𝕊items:
|
||
inspected←(≠items)⥊0
|
||
Inspect←{part𝕊i:
|
||
op←i⊑op
|
||
test←i⊑tests
|
||
Throw←{
|
||
it←(part-1)⊑⟨⌊÷⟜3 Op 𝕩,mod|Op 𝕩⟩
|
||
items↩∾⟜it⌾((Test it)⊸⊑)items
|
||
}
|
||
Throw¨ i⊑items
|
||
inspected↩(≠i⊑items)⊸+⌾(i⊸⊑)inspected
|
||
items↩⟨⟩˙⌾(i⊸⊑)items
|
||
}
|
||
Round←{part⊸Inspect¨↕≠𝕩}
|
||
Round⍟((part-1)⊑20‿10000) items
|
||
# •Show inspected
|
||
×´2↑∨inspected
|
||
}
|
||
|
||
•Show 1 MonkeyBusiness items
|
||
•Show 2 MonkeyBusiness items
|