Skip to content

Instantly share code, notes, and snippets.

@akaralar
Last active December 15, 2020 15:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akaralar/42c527bc9e6b3812b94f67bef446edd6 to your computer and use it in GitHub Desktop.
Save akaralar/42c527bc9e6b3812b94f67bef446edd6 to your computer and use it in GitHub Desktop.
AoC 2020 - Day 15
import Foundation
final class Day1520: Day {
override func perform() {
let numbers = String.input(forDay: 15, year: 2020)
.split(separator: ",")
.map(String.init)
.map(Int.init)
.compactMap { $0 }
var lastSpoken: Int = numbers.last!
var numbersAndTurns = zip(numbers.dropLast().indices, numbers.dropLast())
.reduce(into: [:]) { $0[$1.1] = $1.0 + 1 }
for i in numbers.count+1 ... 30000000 {
if let last = numbersAndTurns[lastSpoken] {
numbersAndTurns[lastSpoken] = i - 1
lastSpoken = (i - 1) - last
} else {
numbersAndTurns[lastSpoken] = i - 1
lastSpoken = 0
}
}
stageTwoOutput = String(lastSpoken)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment