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