aboutsummaryrefslogtreecommitdiff
path: root/2020/fifteen.nim
diff options
context:
space:
mode:
Diffstat (limited to '2020/fifteen.nim')
-rw-r--r--2020/fifteen.nim20
1 files changed, 20 insertions, 0 deletions
diff --git a/2020/fifteen.nim b/2020/fifteen.nim
new file mode 100644
index 0000000..0086054
--- /dev/null
+++ b/2020/fifteen.nim
@@ -0,0 +1,20 @@
+# Day Fifteen: Rambunctious Recitation
+import os, strutils, sequtils
+
+let input: string = paramStr(1)
+
+proc recite(nth: int): int =
+ var numbers: seq[int] = map(split(strip(readFile(input)), ","), parseInt)
+ var history: seq[int] = newSeqWith[int](nth, -1)
+ for i in 0 .. nth - 2:
+ let previous: int = numbers[i]
+ if i == len(numbers) - 1:
+ if history[previous] != -1:
+ numbers.add(i - history[previous])
+ else:
+ numbers.add(0)
+ history[previous] = i
+ return numbers[^1]
+
+echo recite(2020)
+echo recite(30000000)