Implement day 2 in Terraform

This commit is contained in:
2024-12-02 18:25:01 +01:00
parent 5a9667094c
commit b2add928ad
6 changed files with 94 additions and 3 deletions

View File

@@ -12,7 +12,7 @@ run "run" {
}
assert {
condition = output.part2 == 31
condition = output.part2 == 31
error_message = "Part2 output is wrong"
}

View File

@@ -0,0 +1,17 @@
variable "report" {
type = list(number)
}
module "is_valid" {
source = "../is_valid"
count = length(var.report)
report = concat(
count.index > 0 ? slice(var.report, 0, count.index) : [],
count.index < length(var.report) - 1 ? slice(var.report, count.index + 1, length(var.report)) : []
)
}
output "valid" {
value = anytrue(module.is_valid[*].valid)
}

View File

@@ -0,0 +1,14 @@
variable "report" {
type = list(number)
}
locals {
delta = [for i in range(1, length(var.report)) : var.report[i] - var.report[i - 1]]
all_negative = alltrue([for d in local.delta : d <= -1 && d >= -3])
all_positive = alltrue([for d in local.delta : d >= 1 && d <= 3])
}
output "valid" {
value = local.all_negative || local.all_positive
}

28
2024/bonus/day02/main.tf Normal file
View File

@@ -0,0 +1,28 @@
variable "input" {
type = string
}
locals {
reports = [for line in split("\n", trim(var.input, "\n")) : [for num in split(" ", line) : parseint(num, 10)]]
}
module "part1_valid" {
source = "./is_valid"
count = length(local.reports)
report = local.reports[count.index]
}
module "part2_valid" {
source = "./is_savable"
count = length(local.reports)
report = local.reports[count.index]
}
output "part1" {
value = length([for i in range(length(local.reports)) : true if module.part1_valid[i].valid])
}
output "part2" {
value = length([for i in range(length(local.reports)) : true if module.part2_valid[i].valid])
}

View File

@@ -0,0 +1,19 @@
variables {
input = file("../../tests/samples/02.txt")
}
run "run" {
command = plan
assert {
condition = output.part1 == 2
error_message = "Part1 output is wrong"
}
assert {
condition = output.part2 == 4
error_message = "Part2 output is wrong"
}
}

View File

@@ -1,10 +1,10 @@
terraform {
}
module "day01" {
source = "./day01"
input = file("../inputs/01.txt")
input = file("../inputs/01.txt")
}
output "day01_1" {
@@ -14,3 +14,16 @@ output "day01_1" {
output "day01_2" {
value = module.day01.part2
}
module "day02" {
source = "./day02"
input = file("../inputs/02.txt")
}
output "day02_1" {
value = module.day02.part1
}
output "day02_2" {
value = module.day02.part2
}