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
|