chiark / gitweb /
11a and 11b done
authorBen Harris <bjh21@bjh21.me.uk>
Sat, 11 May 2024 09:58:31 +0000 (10:58 +0100)
committerBen Harris <bjh21@bjh21.me.uk>
Sat, 11 May 2024 10:01:54 +0000 (11:01 +0100)
11/11a.bqn [new file with mode: 0644]
11/11b.bqn [new file with mode: 0644]

diff --git a/11/11a.bqn b/11/11a.bqn
new file mode 100644 (file)
index 0000000..0b50b4d
--- /dev/null
@@ -0,0 +1,46 @@
+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
diff --git a/11/11b.bqn b/11/11b.bqn
new file mode 100644 (file)
index 0000000..ccc3c66
--- /dev/null
@@ -0,0 +1,46 @@
+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