File tree Expand file tree Collapse file tree 2 files changed +14
-4
lines changed
src/main/kotlin/nl/sanderp/aoc/aoc2015/day12 Expand file tree Collapse file tree 2 files changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -16,8 +16,9 @@ repositories {
1616}
1717
1818dependencies {
19- testImplementation(kotlin( " test " ) )
19+ implementation( " org.jetbrains.kotlinx " , " kotlinx-serialization-json " , " 1.6.2 " )
2020
21+ testImplementation(kotlin(" test" ))
2122 testImplementation(" org.junit.jupiter" , " junit-jupiter-params" , junitVersion)
2223 testImplementation(" org.amshove.kluent" , " kluent" , " 1.68" )
2324}
Original file line number Diff line number Diff line change 11package nl.sanderp.aoc.aoc2015.day12
22
3+ import kotlinx.serialization.json.*
34import nl.sanderp.aoc.common.readResource
45
5- fun findNumbers (input : String ) = Regex (""" [0-9\-]+""" ).findAll(input).map { it.value.toInt() }
6+ fun sumNumbers (element : JsonElement ) = sumNumbers(element) { false }
7+
8+ fun sumNumbers (element : JsonElement , ignoreObject : (JsonObject ) -> Boolean ): Int = when {
9+ element is JsonPrimitive -> element.intOrNull ? : 0
10+ element is JsonArray -> element.sumOf { sumNumbers(it, ignoreObject) }
11+ element is JsonObject && ! ignoreObject(element) -> element.values.sumOf { sumNumbers(it, ignoreObject) }
12+ else -> 0
13+ }
614
715fun main () {
8- val input = readResource(" Day12.txt" )
9- println (" Part one: ${findNumbers(input).sum()} " )
16+ val input = Json .decodeFromString<JsonElement >(readResource(" Day12.txt" ))
17+ println (" Part one: ${sumNumbers(input)} " )
18+ println (" Part two: ${sumNumbers(input) { it.containsValue(JsonPrimitive (" red" )) }} " )
1019}
You can’t perform that action at this time.
0 commit comments