From 7b5baba08f2da314cc2c83e9ad355137a9733039 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Tue, 15 Dec 2020 00:27:50 -0600 Subject: [PATCH] nim :D --- .gitignore | 1 + p15.nim | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 .gitignore create mode 100644 p15.nim diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a696dd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/p15 diff --git a/p15.nim b/p15.nim new file mode 100644 index 0000000..a6d54fa --- /dev/null +++ b/p15.nim @@ -0,0 +1,33 @@ +import tables + +iterator play(start: seq[int]): int = + var spoke = initTable[int, int]() + var turn = 0 + var nextSpeak = 0 + + for i in start: + turn += 1 + spoke[i] = turn + yield i + nextSpeak = 0 + + while true: + turn += 1 + yield nextSpeak + var lastSpoke = spoke.getOrDefault(nextSpeak, -1) + spoke[nextSpeak] = turn + + if lastSpoke == -1: + nextSpeak = 0 + else: + nextSpeak = turn - lastSpoke + +proc solve(s: seq[int], n: int): int = + var i = 0 + for x in play(s): + inc i + if i == n: + echo x + break + +echo solve(@[5,1,9,18,13,8,0], 30000000)