AdventOfCode2024/src/day7/puzzle1.typ
2024-12-07 12:05:05 +01:00

42 lines
707 B
Typst

#import "/src/utils.typ": *
#let solveable(values, target) = {
if values.len() == 1 {
return values.last() == target
}
let values = values
let v = values.pop()
if calc.rem(target, v) == 0 {
if solveable(values, target / v) {
return true
}
}
if v > target {
return false
}
return solveable(values, target - v)
}
#let solve(input) = {
let equations = input.split("\n")
let total = 0
for equation in equations {
let (target, values) = equation.split(": ")
target = int(target)
values = values.split(" ").map(int)
if solveable(values, target) {
total += target
}
}
return total
}
#show-puzzle(
7, 1,
solve,
example: 3749
)