day(07): use ‹when› expression instead of body

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-12-07 18:24:17 +01:00
parent 638cf91099
commit 754daa65e4
Signed by: mfocko
SSH key fingerprint: SHA256:icm0fIOSJUpy5+1x23sfr+hLtF9UhY8VpMC7H4WFJP8

View file

@ -7,22 +7,16 @@ private data class Equation(
result: Long,
i: Int,
op: (Long, Long) -> Long,
): Boolean {
// used all operands
if (i >= operands.size) {
return result == target
): Boolean =
when {
i >= operands.size -> result == target
result > target -> false
else ->
ops.any { nextOp ->
canSatisfy(ops, op(result, operands[i]), i + 1, nextOp)
}
}
// overshot
if (result > target) {
return false
}
return ops.any { nextOp ->
canSatisfy(ops, op(result, operands[i]), i + 1, nextOp)
}
}
fun isSatisfiable(ops: List<(Long, Long) -> Long>): Boolean = canSatisfy(ops, 0L, 0, Long::plus)
}
@ -65,7 +59,10 @@ class Day07(
// no-op
}
private fun getSum(ops: List<(Long, Long) -> Long>): Long = equations.filter { it.isSatisfiable(ops) }.sumOf { it.target }
private fun getSum(ops: List<(Long, Long) -> Long>): Long =
equations
.filter { it.isSatisfiable(ops) }
.sumOf { it.target }
override fun part1(): Long = getSum(PART1_OPS)