chiark / gitweb /
22a works on example
authorBen Harris <bjh21@bjh21.me.uk>
Sat, 1 Jun 2024 14:16:29 +0000 (15:16 +0100)
committerBen Harris <bjh21@bjh21.me.uk>
Sat, 1 Jun 2024 14:16:29 +0000 (15:16 +0100)
22/22a.bqn

index 32abbe886d0c22074e5e6ad9fdb93c0412004c63..d21b3ee4b0cb6b41c97be665948dbd395f64822e 100644 (file)
@@ -6,10 +6,22 @@ Prep←{ ⟨ PrepMap ¯2↓𝕩, PrepPath ¯1⊑𝕩 ⟩ }
 Mark←{map𝕊⟨pos,dir⟩:
   ({𝕊⟨0,1⟩:'>';𝕊⟨1,0⟩:'v';𝕊⟨0,¯1⟩:'<';𝕊⟨¯1,0⟩:'^'}dir)⌾(pos⊸⊑) map
 }
+
 Main←{𝕊⟨map,path⟩:
+  Move←{
+    'L' 𝕊 ⟨pos,dir⟩: ⟨pos,⟨¯1,1⟩×⌽dir⟩;
+    'R' 𝕊 ⟨pos,dir⟩: ⟨pos,⟨1,¯1⟩×⌽dir⟩;
+    n 𝕊 ⟨pos,dir⟩: ⟨dir Advance⍟n pos,dir⟩
+  }
+  Advance←{dir 𝕊 pos:
+    dest←(≢map)|pos+dir
+    dest↩{ (≢map)|𝕩+dir } •_while_ { ' '=𝕩⊑map } dest
+    ('.'=dest⊑map)⊑⟨pos,dest⟩
+  }
   pos←⟨0,⊑(⊏map)⊐'.'⟩
   dir←⟨0,1⟩
-  map Mark⟨pos,dir⟩
+  ⟨⟨r,c⟩,d⟩ ← ⟨pos,dir⟩ Move´ ⌽path
+  (1000×1+r) + (4×1+c) + (|1-˜+´⟨2,1⟩×d)
 }
 
 •Show Main Prep •file.Lines ⊑•args