Files
adventofcode/2024/bonus/day03/main.tf
Bert Peters edb0767201 Optimize day 3
Avoid instantiating module and backtracking, instead use regex for
filtering. Much faster. Since we are not matching brackets, but rather
only care about the last instance, the limitations of regex don't apply.
2024-12-07 10:42:38 +01:00

20 lines
521 B
HCL

variable "input" {
type = string
}
locals {
filtered = replace(var.input, "/(?s)don't\\(\\).*?do\\(\\)/", "")
filtered2 = replace(local.filtered, "/(?s)don't\\(\\).*/", "")
muls = regexall("mul\\((\\d+),(\\d+)\\)", var.input)
filtered_muls = regexall("mul\\((\\d+),(\\d+)\\)", local.filtered2)
}
output "part1" {
value = sum([for mul in local.muls : tonumber(mul[1]) * tonumber(mul[0])])
}
output "part2" {
value = sum([for mul in local.filtered_muls : tonumber(mul[1]) * tonumber(mul[0])])
}