about summary refs log tree commit diff
path: root/day14.ijs
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2020-12-15 20:23:31 +0100
committerLeah Neukirchen <leah@vuxu.org>2020-12-15 20:23:31 +0100
commit76933fddfe8deb9d18c40ea974bbe71bbc7dd319 (patch)
tree6377b66a2068d358ba1ea4d36a58a46893ea9393 /day14.ijs
parentd58d88e5c3563e50897a3c7b1cbd16b6e3ed38c9 (diff)
downloadadventofcode2020-76933fddfe8deb9d18c40ea974bbe71bbc7dd319.tar.gz
adventofcode2020-76933fddfe8deb9d18c40ea974bbe71bbc7dd319.tar.xz
adventofcode2020-76933fddfe8deb9d18c40ea974bbe71bbc7dd319.zip
day14
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