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,18 +7,12 @@ private data class Equation(
result: Long, result: Long,
i: Int, i: Int,
op: (Long, Long) -> Long, op: (Long, Long) -> Long,
): Boolean { ): Boolean =
// used all operands when {
if (i >= operands.size) { i >= operands.size -> result == target
return result == target result > target -> false
} else ->
ops.any { nextOp ->
// overshot
if (result > target) {
return false
}
return ops.any { nextOp ->
canSatisfy(ops, op(result, operands[i]), i + 1, nextOp) canSatisfy(ops, op(result, operands[i]), i + 1, nextOp)
} }
} }
@ -65,7 +59,10 @@ class Day07(
// no-op // 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) override fun part1(): Long = getSum(PART1_OPS)