Skip to content

Commit 80fcd83

Browse files
committed
2025 Day 02 WIP
1 parent 36e23bf commit 80fcd83

File tree

1 file changed

+33
-9
lines changed
  • src/main/kotlin/de/jball/aoc2025/day02

1 file changed

+33
-9
lines changed

src/main/kotlin/de/jball/aoc2025/day02/Day02.kt

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,46 @@ package de.jball.aoc2025.day02
22

33
import de.jball.AdventOfCodeDay
44

5-
class Day02(test: Boolean = false): AdventOfCodeDay<Long>(test, 1227775554L, 0L) {
6-
val ranges = input[0].split(",").map { rangeString ->
7-
val rangeNums = rangeString.split("-")
8-
.map { numberString -> numberString.toLong() }
9-
rangeNums[0]..rangeNums[1]
5+
class Day02(test: Boolean = false): AdventOfCodeDay<Long>(test, 1227775554L, 4174379265L) {
6+
val ranges = input[0]
7+
.split(",")
8+
.map { rangeString ->
9+
val rangeNums = rangeString.split("-")
10+
.map { numberString -> numberString.toLong() }
11+
rangeNums[0]..rangeNums[1]
1012
}
1113

1214
override fun part1(): Long {
13-
ranges.map { range ->
14-
range.map { it.toString() }
15+
return ranges.sumOf { range ->
16+
sumOfInvalidIds(range, { idString ->
17+
val windowSize = idString.length / 2 + idString.length % 2
18+
windowSize..windowSize
19+
})
1520
}
16-
TODO("Not yet implemented")
21+
}
22+
23+
private fun sumOfInvalidIds(range: LongRange, windowFunction: (id: String) -> IntRange): Long = range.map { number ->
24+
number.toString()
25+
}.filter { idString ->
26+
windowFunction(idString)
27+
.any { windowSize ->
28+
// if the different parts of the id string are all equal, then the distinct call would result in a list of size 1.
29+
idString.windowed(windowSize, windowSize, true).distinct().size == 1
30+
}
31+
}.sumOf { numberString ->
32+
numberString.toLong()
1733
}
1834

1935
override fun part2(): Long {
20-
TODO("Not yet implemented")
36+
return ranges.sumOf { range ->
37+
sumOfInvalidIds(range, { idString ->
38+
1..(idString.length / 2 + idString.length % 2)
39+
})
40+
}
2141
}
2242

2343
}
44+
45+
fun main() {
46+
Day02().run()
47+
}

0 commit comments

Comments
 (0)