mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 21:00:31 +01:00
Inline module
Because this is Terraform, and it's the ultimate optimisation technique
This commit is contained in:
@@ -2,17 +2,24 @@ variable "prev" {
|
|||||||
type = map(number)
|
type = map(number)
|
||||||
}
|
}
|
||||||
|
|
||||||
module "transform" {
|
|
||||||
source = "../transform"
|
|
||||||
for_each = var.prev
|
|
||||||
|
|
||||||
num = each.key
|
|
||||||
}
|
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
|
not_a_module = {
|
||||||
|
for num, _ in var.prev : num => (
|
||||||
|
tonumber(num) == 0
|
||||||
|
? [1]
|
||||||
|
: (
|
||||||
|
length(tostring(num)) % 2 == 0
|
||||||
|
? [
|
||||||
|
tonumber(substr(tostring(num), 0, length(tostring(num)) / 2)),
|
||||||
|
tonumber(substr(tostring(num), length(tostring(num)) / 2, length(tostring(num)) / 2)),
|
||||||
|
]
|
||||||
|
: [num * 2024]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
by_value = flatten([
|
by_value = flatten([
|
||||||
for key, value in module.transform :
|
for key, value in local.not_a_module :
|
||||||
[for result in value.result : { num = result, count = var.prev[key] }]
|
[for result in value : { num = result, count = var.prev[key] }]
|
||||||
])
|
])
|
||||||
|
|
||||||
grouped = { for kv in local.by_value : kv.num => kv.count... }
|
grouped = { for kv in local.by_value : kv.num => kv.count... }
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
variable "num" {
|
|
||||||
type = number
|
|
||||||
}
|
|
||||||
|
|
||||||
locals {
|
|
||||||
as_str = tostring(var.num)
|
|
||||||
len = length(local.as_str)
|
|
||||||
half = floor(length(local.as_str) / 2)
|
|
||||||
first = try(tonumber(substr(local.as_str, 0, local.half)), -1)
|
|
||||||
second = try(tonumber(substr(local.as_str, local.half, local.half)), -1)
|
|
||||||
}
|
|
||||||
|
|
||||||
output "result" {
|
|
||||||
value = var.num == 0 ? [1] : local.len % 2 == 0 ? [local.first, local.second] : [var.num * 2024]
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user