Day 3 Part 1
This commit is contained in:
parent
4bd66215be
commit
77d9537bdd
9 changed files with 492 additions and 0 deletions
87
day_3/test/day_3_test.gleam
Normal file
87
day_3/test/day_3_test.gleam
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
import day_3.{Bank, Digit}
|
||||
import gleam/list
|
||||
import gleeunit
|
||||
|
||||
pub fn main() -> Nil {
|
||||
gleeunit.main()
|
||||
}
|
||||
|
||||
pub fn file_parse_test() {
|
||||
assert day_3.file_to_banks("test/calibration.txt")
|
||||
== [
|
||||
day_3.Bank(
|
||||
[9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1]
|
||||
|> list.map(day_3.Digit),
|
||||
),
|
||||
day_3.Bank(
|
||||
[8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9]
|
||||
|> list.map(day_3.Digit),
|
||||
),
|
||||
day_3.Bank(
|
||||
[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 7, 8]
|
||||
|> list.map(day_3.Digit),
|
||||
),
|
||||
day_3.Bank(
|
||||
[8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1]
|
||||
|> list.map(day_3.Digit),
|
||||
),
|
||||
]
|
||||
}
|
||||
|
||||
pub fn split_single_element_bank_test() {
|
||||
assert day_3.split_bank_at_max(Bank([Digit(1)]))
|
||||
== #(Bank([Digit(1)]), Bank([]))
|
||||
}
|
||||
|
||||
pub fn split_at_first_digit_test() {
|
||||
assert day_3.split_bank_at_max(Bank([Digit(3), Digit(2), Digit(1)]))
|
||||
== #(Bank([Digit(3)]), Bank([Digit(2), Digit(1)]))
|
||||
}
|
||||
|
||||
// The degenerate case
|
||||
pub fn extract_max_from_accending_test() {
|
||||
assert day_3.split_bank_at_max(Bank([Digit(1), Digit(2), Digit(3)]))
|
||||
== #(Bank([Digit(1), Digit(2)]), Bank([Digit(3)]))
|
||||
}
|
||||
|
||||
pub fn complex_degnerate_test() {
|
||||
assert day_3.split_bank_at_max(day_3.int_list_to_bank([1, 2, 1, 3]))
|
||||
== #(day_3.int_list_to_bank([1, 2]), day_3.int_list_to_bank([1, 3]))
|
||||
}
|
||||
|
||||
pub fn bank_to_split_line_4_test() {
|
||||
assert day_3.int_list_to_bank([8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1])
|
||||
|> day_3.split_bank_at_max
|
||||
== #(
|
||||
day_3.int_list_to_bank([8, 1, 8, 1, 8, 1, 9]),
|
||||
day_3.int_list_to_bank([1, 1, 1, 1, 2, 1, 1, 1]),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn bank_to_max_line_1_test() {
|
||||
assert day_3.int_list_to_bank([9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1])
|
||||
|> day_3.get_max_from_bank
|
||||
== 98
|
||||
}
|
||||
|
||||
pub fn bank_to_max_line_2_test() {
|
||||
assert day_3.int_list_to_bank([8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9])
|
||||
|> day_3.get_max_from_bank
|
||||
== 89
|
||||
}
|
||||
|
||||
pub fn bank_to_max_line_3_test() {
|
||||
assert day_3.int_list_to_bank([2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 7, 8])
|
||||
|> day_3.get_max_from_bank
|
||||
== 78
|
||||
}
|
||||
|
||||
pub fn bank_to_max_line_4_test() {
|
||||
assert day_3.int_list_to_bank([8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1])
|
||||
|> day_3.get_max_from_bank
|
||||
== 92
|
||||
}
|
||||
|
||||
pub fn calibrate_test() {
|
||||
assert day_3.file_to_max_joltage("test/calibration.txt") == 357
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue