chiark / gitweb /
17a starting to work
authorBen Harris <bjh21@bjh21.me.uk>
Tue, 21 May 2024 21:10:06 +0000 (22:10 +0100)
committerBen Harris <bjh21@bjh21.me.uk>
Tue, 21 May 2024 21:10:06 +0000 (22:10 +0100)
need to not restart jet sequence for each rock, though

17/17a.bqn [new file with mode: 0644]

diff --git a/17/17a.bqn b/17/17a.bqn
new file mode 100644 (file)
index 0000000..9ab312d
--- /dev/null
@@ -0,0 +1,50 @@
+rocks←⟨
+  ["...####.."]
+
+  ["....#...."
+   "...###..."
+   "....#...."]
+
+  [".....#..."
+   ".....#..."
+   "...###..."]
+
+  ["...#....."
+   "...#....."
+   "...#....."
+   "...#....."]
+
+  ["...##...."
+   "...##...."]
+⟩
+rocks ".#"⊸⊐¨↩ # Convert to boolean array
+
+Prep←(⊏⟜⟨«˘,»˘⟩)∘("<>"⊸⊐)
+
+Extend←⟨1,0,0,0,0,0,0,0,1⟩⊸∾
+
+Space←{+´2=+˝˘𝕩}
+
+Main←{𝕊 jets:
+  arena←⟨1,9⟩⥊1
+  {
+    falling←((≠rocks)|𝕩)⊑rocks
+    arena Extend⍟((3+≠falling)-(Space arena)) ↩
+    ⟨fallen, fallenpos⟩ ← { 𝕊 ⟨falling,fallpos⟩:
+      fallpos ↩ 1+fallpos
+      jet←((≠jets)|fallpos)⊑jets
+      shifted ← Jet falling
+      obstructed ← ∨´⥊shifted∧(≠shifted)↑fallpos↓arena
+      falling ↩ obstructed ⊑ ⟨shifted,falling⟩
+      •Show ⟨fallpos,falling∨(≠shifted)↑fallpos↓arena⟩
+      ⟨falling,fallpos⟩
+    } •_while_ { 𝕊 ⟨falling,fallpos⟩:
+      ¬∨´⥊falling∧(≠falling)↑(1+fallpos)↓arena
+    } ⟨falling,¯1⟩
+    arena↩ {𝕩∨fallen}⌾{((≠fallen)⊸↑)∘(fallenpos⊸↓)} arena
+    •Show arena⊏".#"
+  }¨↕10
+  @
+}
+
+•Show Main Prep ⊑•file.Lines ⊑•args