1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
load 'aoc.ijs'
d =: ({.;".@}.) every lines 'day12'
rotl =: ] ({. ,~ [: - {:)@[&0~ 90 %~ [
step1 =: 4 : 0
'xx yy dx dy' =. y
'ins n' =. x
select. ins
case. 'N' do. y + 0,n,0,0
case. 'S' do. y - 0,n,0,0
case. 'E' do. y + n,0,0,0
case. 'W' do. y - n,0,0,0
case. 'L' do. xx,yy,n rotl dx,dy
case. 'R' do. xx,yy,(360 - n) rotl dx,dy
case. 'F' do. y + n*dx,dy,0,0
end.
)
+/|2 {. 0 0 1 0 (step1 F.. ]) d NB. 1294
step2 =: 4 : 0
'ins n' =. x
select. {. ins
case. 'N' do. y + 0,0,0,n
case. 'S' do. y - 0,0,0,n
case. 'E' do. y + 0,0,n,0
case. 'W' do. y - 0,0,n,0
case. 'L' do. (2{.y),n rotl 2}.y
case. 'R' do. (2{.y),(360-n) rotl 2}.y
case. 'F' do. y + n*(2}.y),0,0
end.
)
+/|2 {. 0 0 10 1 (step2 F.. ]) d NB. 20592
|