1
0

Save part1 result + sum()

This commit is contained in:
Hubert Van De Walle 2020-12-09 07:24:40 +01:00
parent 77dd1e2cc5
commit 3399bd8c43

View File

@ -8,11 +8,15 @@ import be.vandewalleh.aoc.utils.input.createDay
@Day(9)
class Day09(@Lines val input: Input<LongArray>) {
private var part1Result = 0L
fun part1() = input.value
.toList()
.asSequence()
.windowed(size = 26)
.find { !isValid(it) }
?.last()
?.also { part1Result = it }
private fun isValid(items: List<Long>): Boolean {
val preamble = items.take(25)
@ -29,15 +33,13 @@ class Day09(@Lines val input: Input<LongArray>) {
}
fun part2(): Long {
val a = 731031916L
var size = 2
while (true) {
for (startIndex in input.value.indices) {
val lastIndex = input.value.size - 1 - size
if (startIndex + size > lastIndex) break
val slice = input.value.sliceArray(startIndex..startIndex + size)
val sum = slice.reduce { acc, l -> acc + l }
if (sum == a) return slice.minOrNull()!! + slice.maxOrNull()!!
if (slice.sum() == part1Result) return slice.minOrNull()!! + slice.maxOrNull()!!
}
size++
}