aboutsummaryrefslogtreecommitdiff
path: root/2020/fifteen.nim
blob: 00860543b8dff7bd3cdb54afafbff28cceccfd38 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)