Skip to content

Commit 6fc482b

Browse files
committed
Solved day04 part 1
1 parent 79797ed commit 6fc482b

File tree

3 files changed

+41
-2
lines changed

3 files changed

+41
-2
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44

55
// project meta data
66
group 'de.havox_design.aoc2023'
7-
version '0.3.4'
7+
version '0.4.2'
88

99
// Switch to gradle "all" distribution.
1010
wrapper {

day04/src/main/kotlin/de/havox_design/aoc2023/day04/Day04.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package de.havox_design.aoc2023.day04
22

33
class Day04(private var filename: String) {
44
fun solvePart1(): Long =
5-
13L
5+
getResourceAsText(filename)
6+
.filter(String::isNotBlank)
7+
.map { ScratchCard.from(it) }
8+
.sumOf { it.scoreV1() }
69

710
fun solvePart2(): Long =
811
0L
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package de.havox_design.aoc2023.day04
2+
3+
data class ScratchCard(val winningNumbers: List<Int>, val playerNumbers: List<Int>) {
4+
fun scoreV1(): Long {
5+
var score = 0L
6+
playerNumbers
7+
.forEach { number ->
8+
if (number in winningNumbers && score == 0L) {
9+
score = 1L
10+
} else if (number in winningNumbers) {
11+
score *= 2
12+
}
13+
}
14+
return score
15+
}
16+
17+
companion object {
18+
private const val NAME_END_DELIMITER: String = ":"
19+
private const val DATA_DELIMITER: String = "|"
20+
private const val VALUE_DELIMITER: String = " "
21+
22+
fun from(entry: String) = ScratchCard(
23+
winningNumbers = entry
24+
.substringAfter(NAME_END_DELIMITER)
25+
.substringBefore(DATA_DELIMITER)
26+
.split(VALUE_DELIMITER)
27+
.filter(String::isNotBlank)
28+
.map(String::toInt),
29+
playerNumbers = entry
30+
.substringAfter(DATA_DELIMITER)
31+
.split(VALUE_DELIMITER)
32+
.filter(String::isNotBlank)
33+
.map(String::toInt),
34+
)
35+
}
36+
}

0 commit comments

Comments
 (0)