day(07): use ‹when› expression instead of body
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
638cf91099
commit
754daa65e4
1 changed files with 12 additions and 15 deletions
27
src/Day07.kt
27
src/Day07.kt
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in a new issue