diff options
Diffstat (limited to 'src/Day06.kt')
-rw-r--r-- | src/Day06.kt | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/src/Day06.kt b/src/Day06.kt index 57e56f2..4627cca 100644 --- a/src/Day06.kt +++ b/src/Day06.kt @@ -1,36 +1,38 @@ -fun calculateFishPopulation(input: String, days: Int): Long { - val fishCounts = - input - .trim() - .split(",") - .map(String::toInt) - .groupingBy { it } - .eachCount() - .mapValues { (_, v) -> v.toLong() } - .toMutableMap() +object Day06 { + private fun calculateFishPopulation(input: String, days: Int): Long { + val fishCounts = + input + .trim() + .split(",") + .map(String::toInt) + .groupingBy { it } + .eachCount() + .mapValues { (_, v) -> v.toLong() } + .toMutableMap() - repeat(days) { - val readyToBirth = fishCounts.getOrDefault(0, 0) - repeat(8) { - fishCounts[it] = fishCounts.getOrDefault(it + 1, 0) + repeat(days) { + val readyToBirth = fishCounts.getOrDefault(0, 0) + repeat(8) { + fishCounts[it] = fishCounts.getOrDefault(it + 1, 0) + } + fishCounts.merge(6, readyToBirth, Long::plus) + fishCounts[8] = readyToBirth } - fishCounts.merge(6, readyToBirth, Long::plus) - fishCounts[8] = readyToBirth - } - return fishCounts.values.sum() -} + return fishCounts.values.sum() + } -fun main() { fun part1(input: String): Int = calculateFishPopulation(input, 80).toInt() fun part2(input: String): Long = calculateFishPopulation(input, 256) +} +fun main() { val testInput = readInputAsString("Day06_test") - check(part1(testInput) == 5934) - check(part2(testInput) == 26984457539) + check(Day06.part1(testInput) == 5934) + check(Day06.part2(testInput) == 26984457539) val input = readInputAsString("Day06") - println(part1(input)) - println(part2(input)) + println(Day06.part1(input)) + println(Day06.part2(input)) } |