about summary refs log tree commit diff
path: root/day14.ijs
diff options
context:
space:
mode:
Diffstat (limited to 'day14.ijs')
-rw-r--r--day14.ijs41
1 files changed, 41 insertions, 0 deletions
diff --git a/day14.ijs b/day14.ijs
new file mode 100644
index 0000000..76f788d
--- /dev/null
+++ b/day14.ijs
@@ -0,0 +1,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