This commit is contained in:
2021-12-07 07:26:59 +01:00
parent c35ad03092
commit 3a6a09ee5a
3 changed files with 23 additions and 2 deletions

View File

@ -17,13 +17,32 @@ struct Day07: Runnable {
.trimmingCharacters(in: .newlines)
.components(separatedBy: ",")
.map { Int($0)! }
run(horizontalPositions: horizontalPositions)
runA(horizontalPositions: horizontalPositions)
runB(horizontalPositions: horizontalPositions)
}
func run(horizontalPositions: [Int]) {
func runA(horizontalPositions: [Int]) {
let median = horizontalPositions.sorted()[horizontalPositions.count / 2]
let distancesToMedian = horizontalPositions.map { abs(median - $0) }
let toalFuel = distancesToMedian.reduce(0,+)
print(toalFuel)
}
func runB(horizontalPositions: [Int]) {
let average = Double(horizontalPositions.reduce(0, +)) / Double(horizontalPositions.count)
let roundedDown = Int(floor(average))
let roundedUp = Int(ceil(average))
let fuelForRoundedDown = fuelConsumptionFor(horizontalPositions: horizontalPositions, toPosition: roundedDown)
let fuelForRoundedUp = fuelConsumptionFor(horizontalPositions: horizontalPositions, toPosition: roundedUp)
print(min(fuelForRoundedDown, fuelForRoundedUp))
}
func fuelConsumptionFor(horizontalPositions: [Int], toPosition targetPos: Int) -> Int {
horizontalPositions.map { fuelConsumptionFor(numSteps: abs(targetPos - $0)) }.reduce(0,+)
}
func fuelConsumptionFor(numSteps: Int) -> Int {
let dv = Double(numSteps)
return Int((pow(dv, 2) + dv) / 2.0)
}
}

View File

@ -8,4 +8,5 @@
import Foundation
import Runner
Runner(target: Day07.self, day: "07", isTest: true).run()
Runner(target: Day07.self, day: "07", isTest: false).run()