File tree Expand file tree Collapse file tree 3 files changed +41
-2
lines changed
day04/src/main/kotlin/de/havox_design/aoc2023/day04 Expand file tree Collapse file tree 3 files changed +41
-2
lines changed Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ plugins {
44
55// project meta data
66group ' de.havox_design.aoc2023'
7- version ' 0.3.4 '
7+ version ' 0.4.2 '
88
99// Switch to gradle "all" distribution.
1010wrapper {
Original file line number Diff line number Diff line change @@ -2,7 +2,10 @@ package de.havox_design.aoc2023.day04
22
33class 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
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments