Skip to content

Commit 6218cec

Browse files
committed
2024 Day 09 Part 1
1 parent dd9aa3f commit 6218cec

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package de.jball.aoc2024.day09
2+
3+
import de.jball.AdventOfCodeDay
4+
5+
class Day09(test: Boolean = false): AdventOfCodeDay<Long>(test, 1928, 0) {
6+
val fileDb = input[0].windowed(2, 2, partialWindows = true).flatMapIndexed { index, blocks ->
7+
val fileSize = blocks.first().toString().toInt()
8+
val gapSize = if (blocks.length > 1) blocks.last().toString().toInt() else 0
9+
val file = List<Long?>(fileSize) { index.toLong() }
10+
val gap = List<Long?>(gapSize) { null }
11+
file + gap
12+
}.toMutableList()
13+
14+
override fun part1(): Long {
15+
var currentGap = fileDb.indexOfFirst { it == null }
16+
var lastValue = fileDb.indexOfLast { it != null }
17+
18+
while(currentGap < lastValue) {
19+
fileDb[currentGap] = fileDb[lastValue]
20+
fileDb[lastValue] = null
21+
currentGap = fileDb.indexOfFirst { it == null }
22+
lastValue = fileDb.indexOfLast { it != null }
23+
}
24+
return fileDb.filter { it != null }
25+
.mapIndexed { index, entry ->
26+
index.toLong() * entry!!
27+
}.sum()
28+
}
29+
30+
override fun part2(): Long {
31+
TODO("Not yet implemented")
32+
}
33+
}
34+
35+
fun main() {
36+
Day09().run()
37+
}

src/test/kotlin/de/jball/aoc2024/Tests2024.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import de.jball.aoc2024.day05.Day05
88
import de.jball.aoc2024.day06.Day06
99
import de.jball.aoc2024.day07.Day07
1010
import de.jball.aoc2024.day08.Day08
11+
import de.jball.aoc2024.day09.Day09
1112
import kotlin.test.Test
1213

1314
class Tests2024 {
@@ -50,4 +51,9 @@ class Tests2024 {
5051
fun day08() {
5152
Day08(true).run()
5253
}
54+
55+
@Test
56+
fun day09() {
57+
Day09(true).run()
58+
}
5359
}

src/test/resources/2024/Day09.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2333133121414131402

0 commit comments

Comments
 (0)