mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 12:50:32 +01:00
Inline loop
This commit is contained in:
@@ -1,21 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@@ -8,16 +8,18 @@ locals {
|
|||||||
disallow_rules = { for rule in local.rules : rule[1] => rule[0]... }
|
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)]]
|
updates = [for update_line in split("\n", local.parts[1]) : [for v in split(",", update_line) : tonumber(v)]]
|
||||||
}
|
|
||||||
|
|
||||||
module "is_valid" {
|
scores = [
|
||||||
source = "./is_correct"
|
for update in local.updates :
|
||||||
count = length(local.updates)
|
alltrue([
|
||||||
|
for i in range(1, length(update)) :
|
||||||
update = local.updates[count.index]
|
!contains(
|
||||||
disallow_rules = local.disallow_rules
|
flatten([for j in range(i) : lookup(local.disallow_rules, update[j], [])]),
|
||||||
|
update[i]
|
||||||
|
)
|
||||||
|
]) ? update[floor(length(update) / 2)] : 0]
|
||||||
}
|
}
|
||||||
|
|
||||||
output "part1" {
|
output "part1" {
|
||||||
value = sum(module.is_valid[*].valid)
|
value = sum(local.scores[*])
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user