about summary refs log tree commit diff
path: root/day12.ijs
blob: e5301ed50576892d6dd08854ec664854822a6c77 (plain) (blame)
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