mirror of
https://github.com/chylex/Advent-of-Code.git
synced 2025-07-27 18:59:07 +02:00
Add 2021 - Day 7 - Part 2
This commit is contained in:
parent
a858c0e28c
commit
422740ed39
@ -6,10 +6,28 @@ fun main() {
|
||||
|
||||
val p1 = originalPositions.minOrNull() ?: return
|
||||
val p2 = originalPositions.maxOrNull() ?: return
|
||||
val candidates = p1..p2
|
||||
|
||||
val cheapestFuel = (p1..p2).minOf { p ->
|
||||
part1(originalPositions, candidates)
|
||||
part2(originalPositions, candidates)
|
||||
}
|
||||
|
||||
fun part1(originalPositions: IntArray, candidates: IntRange) {
|
||||
val cheapestFuel = candidates.minOf { p ->
|
||||
originalPositions.sumOf { abs(it - p) }
|
||||
}
|
||||
|
||||
println("Cheapest fuel: $cheapestFuel")
|
||||
println("Cheapest fuel at constant fuel usage: $cheapestFuel")
|
||||
}
|
||||
|
||||
fun part2(originalPositions: IntArray, candidates: IntRange) {
|
||||
val cheapestFuel = candidates.minOf { p1 ->
|
||||
originalPositions.sumOf { p2 ->
|
||||
abs(p2 - p1).let { steps ->
|
||||
(steps * (steps + 1)) / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
println("Cheapest fuel at polynomial fuel usage: $cheapestFuel")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user