@@ -8,10 +8,10 @@ class Day11(private var filename: String) {
88 fun solvePart1 (): Long =
99 processSumOfAllDistances(getResourceAsText(filename))
1010
11- fun solvePart2 (): Long =
12- 0L
11+ fun solvePart2 (expansion : Long = 1000000 ): Long =
12+ processSumOfAllDistances(getResourceAsText(filename), expansion)
1313
14- private fun processSumOfAllDistances (input : List <String >): Long {
14+ private fun processSumOfAllDistances (input : List <String >, expansion : Long = 2 ): Long {
1515 val galaxies = input
1616 .flatMapIndexed { y, s ->
1717 s.mapIndexed { x, c -> if (c == ICON_GALAXY .first()) Pair (y.toLong(), x.toLong()) else null }
@@ -32,7 +32,7 @@ class Day11(private var filename: String) {
3232 .contains(ICON_GALAXY )
3333 }
3434 .map { it.index.toLong() }
35- val expandedGalaxies = calculateUniverseExpansion(galaxies, emptyRows, emptyColumns)
35+ val expandedGalaxies = calculateUniverseExpansion(galaxies, emptyRows, emptyColumns, expansion )
3636 val galaxyPairs = expandedGalaxies
3737 .flatMapIndexed { index, galaxy ->
3838 expandedGalaxies
@@ -48,12 +48,13 @@ class Day11(private var filename: String) {
4848 private fun calculateUniverseExpansion (
4949 galaxies : List <Pair <Long , Long >>,
5050 emptyRows : List <Long >,
51- emptyColumns : List <Long >
51+ emptyColumns : List <Long >,
52+ expansion : Long = 2
5253 ) =
5354 galaxies
5455 .map {
55- Pair (it.first + emptyRows.count { r -> r < it.first },
56- it.second + emptyColumns.count { c -> c < it.second })
56+ Pair (it.first + emptyRows.count { r -> r < it.first } * (expansion - 1 ) ,
57+ it.second + emptyColumns.count { c -> c < it.second } * (expansion - 1 ) )
5758 }
5859
5960 private fun calculateDistance (galaxy1 : Pair <Long , Long >, galaxy2 : Pair <Long , Long >): Long {
0 commit comments