Move to subdirectory
This commit is contained in:
parent
c4ae807a5f
commit
c7deb3c71d
47 changed files with 1208 additions and 0 deletions
36
2020/day15/main.swift
Normal file
36
2020/day15/main.swift
Normal file
|
@ -0,0 +1,36 @@
|
|||
import Foundation
|
||||
|
||||
let input = [16,1,0,18,12,14,19]
|
||||
|
||||
var memory: [Int: (Int, Int?)] = [:]
|
||||
var last = -1
|
||||
|
||||
for (round, num) in input.enumerated() {
|
||||
memory[num] = (round, nil)
|
||||
last = num
|
||||
}
|
||||
|
||||
func lastRound(for num: Int) -> Int? {
|
||||
guard let (first, second) = memory[num] else { return nil }
|
||||
if let second = second { return second }
|
||||
return first
|
||||
}
|
||||
|
||||
for round in input.count..<30000000 {
|
||||
let (first, second) = memory[last]!
|
||||
|
||||
if let second = second {
|
||||
last = second - first
|
||||
} else {
|
||||
last = 0
|
||||
}
|
||||
|
||||
if let prev = lastRound(for: last) {
|
||||
memory[last] = (prev, round)
|
||||
} else {
|
||||
memory[last] = (round, nil)
|
||||
}
|
||||
}
|
||||
|
||||
print(last)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue