mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 21:00:31 +01:00
2025 day 2 part 2 in Terraform
This commit is contained in:
29
2025/day02/README.md
Normal file
29
2025/day02/README.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
## Day 02: Terraform
|
||||||
|
|
||||||
|
The code assumes an input file at `../inputs/02.txt`. Other than that, simply try to run as follows:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ terraform init
|
||||||
|
…
|
||||||
|
Initializing the backend...
|
||||||
|
Initializing modules...
|
||||||
|
Initializing provider plugins...
|
||||||
|
|
||||||
|
Terraform has been successfully initialized!
|
||||||
|
|
||||||
|
You may now begin working with Terraform. Try running "terraform plan" to see
|
||||||
|
any changes that are required for your infrastructure. All Terraform commands
|
||||||
|
should now work.
|
||||||
|
|
||||||
|
If you ever set or change modules or backend configuration for Terraform,
|
||||||
|
rerun this command to reinitialize your working directory. If you forget, other
|
||||||
|
commands will detect it and remind you to do so if necessary.
|
||||||
|
$ terraform plan
|
||||||
|
….
|
||||||
|
|
||||||
|
Changes to Outputs:
|
||||||
|
+ part1 = secret
|
||||||
|
+ part2 = also secret
|
||||||
|
|
||||||
|
You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
|
||||||
|
```
|
||||||
@@ -16,8 +16,8 @@ locals {
|
|||||||
maximum = substr(tostring(var.max), 0, local.digits)
|
maximum = substr(tostring(var.max), 0, local.digits)
|
||||||
real_maximum = length(tostring(var.max)) % var.repetitions == 0 ? tonumber(local.maximum) : pow(10, local.digits)
|
real_maximum = length(tostring(var.max)) % var.repetitions == 0 ? tonumber(local.maximum) : pow(10, local.digits)
|
||||||
|
|
||||||
min_digits = max(floor(length(tostring(var.min)) / var.repetitions), 1)
|
minimum_prefix = substr(tostring(var.min), 0, length(tostring(var.min)) - local.digits * (var.repetitions - 1))
|
||||||
minimum = tonumber(substr(tostring(var.min), 0, local.min_digits))
|
minimum = local.minimum_prefix == "" ? 1 : tonumber(local.minimum_prefix)
|
||||||
|
|
||||||
count = max(local.real_maximum - local.minimum + 1, 1)
|
count = max(local.real_maximum - local.minimum + 1, 1)
|
||||||
|
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ locals {
|
|||||||
|
|
||||||
module "range" {
|
module "range" {
|
||||||
source = "../range"
|
source = "../range"
|
||||||
count = local.digits
|
count = local.digits - 1
|
||||||
max = var.max
|
max = var.max
|
||||||
min = var.min
|
min = var.min
|
||||||
repetitions = count.index + 1
|
repetitions = count.index + 2
|
||||||
}
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
run "sample-1" {
|
run "sample-1-1" {
|
||||||
module {
|
module {
|
||||||
source = "./range"
|
source = "./range"
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,7 @@ run "sample-1" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
run "sample-2" {
|
run "sample-1-2" {
|
||||||
module {
|
module {
|
||||||
source = "./range"
|
source = "./range"
|
||||||
}
|
}
|
||||||
@@ -29,3 +29,100 @@ run "sample-2" {
|
|||||||
error_message = "Incorrect result"
|
error_message = "Incorrect result"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run "sample-2-1" {
|
||||||
|
module {
|
||||||
|
source = "./range2"
|
||||||
|
}
|
||||||
|
|
||||||
|
variables {
|
||||||
|
min = 11
|
||||||
|
max = 22
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {
|
||||||
|
condition = output.invalid_sum == 33
|
||||||
|
error_message = "Incorrect result"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
run "sample-2-2" {
|
||||||
|
module {
|
||||||
|
source = "./range2"
|
||||||
|
}
|
||||||
|
|
||||||
|
variables {
|
||||||
|
min = 95
|
||||||
|
max = 115
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {
|
||||||
|
condition = output.invalid_sum == 210
|
||||||
|
error_message = "Incorrect result"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
run "sample-2-3" {
|
||||||
|
module {
|
||||||
|
source = "./range2"
|
||||||
|
}
|
||||||
|
|
||||||
|
variables {
|
||||||
|
min = 998
|
||||||
|
max = 1012
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {
|
||||||
|
condition = output.invalid_sum == 2009
|
||||||
|
error_message = "Incorrect result"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
run "sample-2-2-detail" {
|
||||||
|
module {
|
||||||
|
source = "./range"
|
||||||
|
}
|
||||||
|
|
||||||
|
variables {
|
||||||
|
min = 95
|
||||||
|
max = 115
|
||||||
|
repetitions = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {
|
||||||
|
condition = output.invalid_sum == 111
|
||||||
|
error_message = "Incorrect result"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
run "sample-2-10" {
|
||||||
|
module {
|
||||||
|
source = "./range2"
|
||||||
|
}
|
||||||
|
|
||||||
|
variables {
|
||||||
|
min = 824824821
|
||||||
|
max = 824824827
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {
|
||||||
|
condition = output.invalid_sum == 824824824
|
||||||
|
error_message = "Incorrect result"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
run "sample-2-11" {
|
||||||
|
module {
|
||||||
|
source = "./range2"
|
||||||
|
}
|
||||||
|
|
||||||
|
variables {
|
||||||
|
min = 2121212118
|
||||||
|
max = 2121212124
|
||||||
|
}
|
||||||
|
|
||||||
|
assert {
|
||||||
|
condition = output.invalid_sum == 2121212121
|
||||||
|
error_message = "Incorrect result"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user