({𝕊⟨0,1⟩:'>';𝕊⟨1,0⟩:'v';𝕊⟨0,¯1⟩:'<';𝕊⟨¯1,0⟩:'^'}dir)⌾(pos⊸⊑) map
}
+TL←{⟨¯1,1⟩×⌽𝕩}
+TR←{⟨1,¯1⟩×⌽𝕩}
+
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⟩
+ 'L' 𝕊 ⟨pos,dir⟩: ⟨pos,TL dir⟩;
+ 'R' 𝕊 ⟨pos,dir⟩: ⟨pos,TR dir⟩;
+ n 𝕊 ⟨pos,dir⟩: Advance⍟n⟨pos,dir⟩
}
- Advance←{dir 𝕊 pos:
+ Advance←{𝕊⟨pos,dir⟩:
dest←(≢map)|pos+dir
dest↩{ (≢map)|𝕩+dir } •_while_ { ' '=𝕩⊑map } dest
- ('.'=dest⊑map)⊑⟨pos,dest⟩
+ ⟨('.'=dest⊑map)⊑⟨pos,dest⟩,dir⟩
}
pos←⟨1,⊑(1⊏map)⊐'.'⟩
dir←⟨0,1⟩