diff options
author | 2020-12-15 20:20:21 +0100 | |
---|---|---|
committer | 2020-12-15 20:20:21 +0100 | |
commit | 6eb86da5efc99e63c58f1fc9a1f7e3706dd6a2dc (patch) | |
tree | de4e045a5e792369058426d8058a478017e65f8d | |
parent | 2f7c1f10323a26dea066eecb52b1c3fae746c0f5 (diff) | |
download | advent_of_code_2020-6eb86da5efc99e63c58f1fc9a1f7e3706dd6a2dc.tar.gz advent_of_code_2020-6eb86da5efc99e63c58f1fc9a1f7e3706dd6a2dc.tar.bz2 advent_of_code_2020-6eb86da5efc99e63c58f1fc9a1f7e3706dd6a2dc.zip |
day15
-rw-r--r-- | day15/day15-1.js | 30 | ||||
-rw-r--r-- | day15/day15-2.js | 30 |
2 files changed, 60 insertions, 0 deletions
diff --git a/day15/day15-1.js b/day15/day15-1.js new file mode 100644 index 0000000..45a4ff1 --- /dev/null +++ b/day15/day15-1.js @@ -0,0 +1,30 @@ +const data = [0,3,6] + +const numbers = {} +let last, prev1, prev2 + +const game = (turns) => { + for (let i=1; i <= turns; i++) { + if (i <= data.length) { + numbers[data[i-1]] = [i, 0] + last = data[i-1] + } else { + [prev1, prev2] = numbers[last] + if (!prev2) { + last = 0 + numbers[0] = [i, numbers[0][0]] + } else { + last = prev1 - prev2 + if (numbers[last]) { + numbers[last] = [i, numbers[last][0]] + } else { + numbers[last] = [i, 0] + } + } + } + } +} + +game(2020) +console.log(last) + diff --git a/day15/day15-2.js b/day15/day15-2.js new file mode 100644 index 0000000..11b137c --- /dev/null +++ b/day15/day15-2.js @@ -0,0 +1,30 @@ +const data = [0,13,1,16,6,17] + +const numbers = {} +let last, prev1, prev2 + +const game = (turns) => { + for (let i=1; i <= turns; i++) { + if (i <= data.length) { + numbers[data[i-1]] = [i, 0] + last = data[i-1] + } else { + [prev1, prev2] = numbers[last] + if (!prev2) { + last = 0 + numbers[0] = [i, numbers[0][0]] + } else { + last = prev1 - prev2 + if (numbers[last]) { + numbers[last] = [i, numbers[last][0]] + } else { + numbers[last] = [i, 0] + } + } + } + } +} + +game(30000000) +console.log(last) + |