1
0
Fork 0

Compare commits

...

2 Commits

Author SHA1 Message Date
chylex d23a2207b5
Add 2021 - Day 6 - Part 2 2021-12-10 20:53:23 +01:00
chylex a75cbd15cc
Add 2021 - Day 6 - Part 1 2021-12-10 20:25:55 +01:00
4 changed files with 57 additions and 0 deletions

1
2021/06/input/1.txt Normal file
View File

@ -0,0 +1 @@
1,3,4,1,1,1,1,1,1,1,1,2,2,1,4,2,4,1,1,1,1,1,5,4,1,1,2,1,1,1,1,4,1,1,1,4,4,1,1,1,1,1,1,1,2,4,1,3,1,1,2,1,2,1,1,4,1,1,1,4,3,1,3,1,5,1,1,3,4,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,5,5,3,2,1,5,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,5,1,1,1,1,5,1,1,1,1,1,4,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,2,4,1,5,5,1,1,5,3,4,4,4,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,5,3,1,4,1,1,2,2,1,2,2,5,1,1,1,2,1,1,1,1,3,4,5,1,2,1,1,1,1,1,5,2,1,1,1,1,1,1,5,1,1,1,1,1,1,1,5,1,4,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,5,4,5,1,1,1,1,1,1,1,5,1,1,3,1,1,1,3,1,4,2,1,5,1,3,5,5,2,1,3,1,1,1,1,1,3,1,3,1,1,2,4,3,1,4,2,2,1,1,1,1,1,1,1,5,2,1,1,1,2

54
2021/06/main.kt Normal file
View File

@ -0,0 +1,54 @@
import java.io.File
import java.math.BigInteger
import kotlin.system.measureTimeMillis
fun main() {
val initialConfiguration = File("input/1.txt").readLines()
.single()
.split(',')
.map(String::toInt)
println("(Took ${measureTimeMillis { part1(initialConfiguration) }} ms)")
println("(Took ${measureTimeMillis { part2(initialConfiguration) }} ms)")
}
class FishConfiguration(initialConfiguration: List<Int>) {
private var fishCountByAge = Array(9) { age -> initialConfiguration.count { it == age }.toBigInteger() }
private var day = 0
private val totalFish
get() = fishCountByAge.fold(BigInteger.ZERO, BigInteger::add)
fun advance(days: Int) {
for (day in 1..days) {
advanceToNextDay()
}
}
private fun advanceToNextDay() {
val newCountByAge = Array(9) { BigInteger.ZERO}
for ((age, count) in fishCountByAge.withIndex()) {
if (age == 0) {
newCountByAge[6] += count
newCountByAge[8] += count
}
else {
newCountByAge[age - 1] += count
}
}
fishCountByAge = newCountByAge
++day
println("Day ${day.toString().padStart(3)}: $totalFish fish")
}
}
fun part1(initialConfiguration: List<Int>) {
FishConfiguration(initialConfiguration).advance(80)
}
fun part2(initialConfiguration: List<Int>) {
FishConfiguration(initialConfiguration).advance(256)
}

View File

@ -35,3 +35,4 @@ The versions should not matter, but I used Visual Studio 2019 with `MSVC v142 (1
| 2021 | 03 | Kotlin |
| 2021 | 04 | Kotlin |
| 2021 | 05 | Kotlin |
| 2021 | 06 | Kotlin |

View File

@ -48,4 +48,5 @@ sourceSets {
make(2021, 3)
make(2021, 4)
make(2021, 5)
make(2021, 6)
}