about summary refs log tree commit diff
path: root/day14.ijs
blob: 76f788dc587911c0d93b46e922a20fde13cad2e1 (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
36
37
38
39
40
41
load 'aoc.ijs'
load 'regex'

land =: 23 b.
lor =: 17 b.

part1 =: 3 : 0
mem =. 1 $. (2^16);0;0
for_l. lines 'day14' do.
  if. 'mask' rxin >l do.
    mask =. 7 }. >l
    maska =. #. -. '1' i. mask
    maskb =. #. '0' i. mask
  else.
    'addr val' =. ". every '\d+' rxall >l
    mem =. mem addr }~ maskb lor maska land val
  end.
end.
+/ 5 $. mem
)
part1''  NB. 7997531787333


masked =: 4 : 0
m =. x='X'
(#. (x='1') +."1 (#: i. 2^+/m) (I. m)}"1 1 m) land y lor #. x='0'
)

part2 =: 3 : 0
mem =. 1 $. (2^36);0;0
for_l. lines 'day14' do.
  if. 'mask' rxin >l do.
    mask =. 7 }. >l
  else.
    'addr val' =. ". every '\d+' rxall >l
    mem =. mem (mask masked addr) }~ val
  end.
end.
+/ 5 $. mem
)
part2''  NB. 3564822193820