Implement day 5 part 1 in terraform

I'm pretty sure part 2 is impossible
This commit is contained in:
2024-12-07 12:39:37 +01:00
parent edb0767201
commit 2d49907692
4 changed files with 70 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
variable "update" {
type = list(number)
}
variable "disallow_rules" {
type = map(list(number))
}
locals {
not_disallowed = alltrue([
for i in range(1, length(var.update)) :
!contains(
flatten([for j in range(i) : lookup(var.disallow_rules, var.update[j], [])]),
var.update[i]
)
])
}
output "valid" {
value = local.not_disallowed ? var.update[floor(length(var.update) / 2)] : 0
}

23
2024/bonus/day05/main.tf Normal file
View File

@@ -0,0 +1,23 @@
variable "input" {
type = string
}
locals {
parts = split("\n\n", chomp(var.input))
rules = [for rule_line in split("\n", local.parts[0]) : [for v in split("|", rule_line) : tonumber(v)]]
disallow_rules = { for rule in local.rules : rule[1] => rule[0]... }
updates = [for update_line in split("\n", local.parts[1]) : [for v in split(",", update_line) : tonumber(v)]]
}
module "is_valid" {
source = "./is_correct"
count = length(local.updates)
update = local.updates[count.index]
disallow_rules = local.disallow_rules
}
output "part1" {
value = sum(module.is_valid[*].valid)
}