Save part1 result + sum()
This commit is contained in:
parent
77dd1e2cc5
commit
3399bd8c43
@ -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++
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user