aboutsummaryrefslogtreecommitdiff
path: root/2020/fourteen.nim
diff options
context:
space:
mode:
Diffstat (limited to '2020/fourteen.nim')
-rw-r--r--2020/fourteen.nim21
1 files changed, 21 insertions, 0 deletions
diff --git a/2020/fourteen.nim b/2020/fourteen.nim
new file mode 100644
index 0000000..e333cf9
--- /dev/null
+++ b/2020/fourteen.nim
@@ -0,0 +1,21 @@
+# Day Fourteen: Docking Data
+import os, strutils, sequtils
+
+let input: string = paramStr(1)
+let program: seq[tuple[address, value: string]] = map(split(strip(readFile(input)), '\n'),
+ func (param: string): (string, string) =
+ (split(param, " = ")[0], split(param, " = ")[1]))
+
+var mask: string = repeat('X', 36)
+var memory: seq[int] = newSeq[int](99999)
+for line in program:
+ if line.address == "mask":
+ mask = line.value
+ elif line.address[0..2] == "mem":
+ var value: string = toBin(parseInt(line.value), 36)
+ for i, bit in mask:
+ if bit != 'X':
+ value[i] = bit
+ memory[parseInt(line.address[4..^2])] = fromBin[int](value)
+
+echo foldl(memory, a + b)