--- /dev/null
+Split←{
+ blocknums ← +`𝕨
+ # Set entries in blocknums to -1 when they correspond with delimiters.
+ blocknums ↩ (¯1¨)⌾(𝕨⊸/) blocknums
+ blocknums⊔𝕩
+}
+
+Monkey←{𝕊desc:
+ items←{𝕩∊", "}⊸Split(18↓1⊑desc)
+ items↩•ParseFloat¨(⟨⟩⊸≢¨items)/items
+ op←' '⊸=⊸Split 19↓2⊑desc
+ divisor←•ParseFloat 21↓3⊑desc
+ iftrue ←•ParseFloat 29↓4⊑desc
+ iffalse←•ParseFloat 30↓5⊑desc
+ count⇐0
+ Catch⇐{items∾↩⟨𝕩⟩}
+ Inspect←{
+ ⟨"old","*","old"⟩𝕊old:old×old;
+ ⟨"old","*",n⟩ 𝕊old:oldוParseFloat n;
+ ⟨"old","+",n⟩ 𝕊old:old+•ParseFloat n
+ }
+ Relieve←{⌊𝕩÷3}
+ Turn⇐{𝕤
+ {𝕊i:
+ count+↩1
+ i↩Relieve op Inspect i
+ (((0=divisor|i)⊑⟨iffalse,iftrue⟩)⊑monkeys).Catch i
+ }¨items
+ items↩⟨⟩
+ }
+}
+
+monkeys←@
+
+Prep←{
+ monkeys↩Monkey¨(""⊸≡¨𝕩)Split𝕩
+}
+
+Main←{𝕤
+ {𝕤
+ {𝕩.Turn @}¨monkeys
+ }¨↕20
+ ×´2↑∨{𝕩.count}¨monkeys
+}
+
+•Show Main Prep •file.Lines ⊑•args
--- /dev/null
+Split←{
+ blocknums ← +`𝕨
+ # Set entries in blocknums to -1 when they correspond with delimiters.
+ blocknums ↩ (¯1¨)⌾(𝕨⊸/) blocknums
+ blocknums⊔𝕩
+}
+
+Monkey←{𝕊desc:
+ items←{𝕩∊", "}⊸Split(18↓1⊑desc)
+ items↩•ParseFloat¨(⟨⟩⊸≢¨items)/items
+ inspect←{
+ 𝕊⟨"old","*","old"⟩:{𝕩×𝕩};
+ 𝕊⟨"old","*",n⟩ :{𝕩וParseFloat n};
+ 𝕊⟨"old","+",n⟩ :{𝕩+•ParseFloat n}
+ }' '⊸=⊸Split 19↓2⊑desc
+ divisor⇐•ParseFloat 21↓3⊑desc
+ iftrue ←•ParseFloat 29↓4⊑desc
+ iffalse←•ParseFloat 30↓5⊑desc
+ count⇐0
+ Catch⇐{items∾↩⟨𝕩⟩}
+ Turn⇐{𝕤
+ {𝕊i:
+ count+↩1
+ i↩worrymod|Inspect i
+ (((0=divisor|i)⊑⟨iffalse,iftrue⟩)⊑monkeys).Catch i
+ }¨items
+ items↩⟨⟩
+ }
+}
+
+monkeys←@
+worrymod←0
+
+Prep←{
+ monkeys↩Monkey¨(""⊸≡¨𝕩)Split𝕩
+ worrymod↩×´{𝕩.divisor}¨monkeys
+}
+
+Main←{𝕤
+ {𝕤
+ {𝕩.Turn @}¨monkeys
+ }¨↕10000
+ ×´2↑∨{𝕩.count}¨monkeys
+}
+
+•Show Main Prep •file.Lines ⊑•args