111 lines
2.1 KiB
Elixir
111 lines
2.1 KiB
Elixir
defmodule Aoc2024Test do
|
||
use ExUnit.Case
|
||
# doctest Aoc2024
|
||
|
||
test "Day 1" do
|
||
parsed_input =
|
||
Aoc2024.Day01.parse("""
|
||
3 4
|
||
4 3
|
||
2 5
|
||
1 3
|
||
3 9
|
||
3 3
|
||
""")
|
||
|
||
assert Aoc2024.Day01.part1(parsed_input) == 11
|
||
assert Aoc2024.Day01.part2(parsed_input) == 31
|
||
end
|
||
|
||
test "Day 2" do
|
||
parsed_input =
|
||
Aoc2024.Day02.parse("""
|
||
7 6 4 2 1
|
||
1 2 7 8 9
|
||
9 7 6 2 1
|
||
1 3 2 4 5
|
||
8 6 4 4 1
|
||
1 3 6 7 9
|
||
""")
|
||
|
||
assert Aoc2024.Day02.part1(parsed_input) == 2
|
||
assert Aoc2024.Day02.part2(parsed_input) == 4
|
||
end
|
||
|
||
test "Day 3 - part 1" do
|
||
input = "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))"
|
||
assert Aoc2024.Day03.part1(input) == 161
|
||
end
|
||
|
||
test "Day 3 - part 2" do
|
||
input = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))"
|
||
assert Aoc2024.Day03.part2(input) == 48
|
||
end
|
||
|
||
test "Day 3 - part 2 – end with don't" do
|
||
input = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)un?mul(8,5))"
|
||
assert Aoc2024.Day03.part2(input) == 8
|
||
end
|
||
|
||
test "Day 3 - part 2 – support newlines within don't()...do() blocks" do
|
||
input = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)\n+mul(32,64](mul(11,8)undo()?mul(8,5))"
|
||
assert Aoc2024.Day03.part2(input) == 48
|
||
end
|
||
|
||
test "Day 4" do
|
||
input = """
|
||
MMMSXXMASM
|
||
MSAMXMSMSA
|
||
AMXSXMAAMM
|
||
MSAMASMSMX
|
||
XMASAMXAMM
|
||
XXAMMXXAMA
|
||
SMSMSASXSS
|
||
SAXAMASAAA
|
||
MAMMMXMMMM
|
||
MXMXAXMASX
|
||
"""
|
||
|
||
parsed_input = Aoc2024.Day04.parse(input)
|
||
assert Aoc2024.Day04.part1(parsed_input) == 18
|
||
assert Aoc2024.Day04.part2(parsed_input) == 9
|
||
end
|
||
|
||
test "Day 5" do
|
||
input = """
|
||
47|53
|
||
97|13
|
||
97|61
|
||
97|47
|
||
75|29
|
||
61|13
|
||
75|53
|
||
29|13
|
||
97|29
|
||
53|29
|
||
61|53
|
||
97|53
|
||
61|29
|
||
47|13
|
||
75|47
|
||
97|75
|
||
47|61
|
||
75|61
|
||
47|29
|
||
75|13
|
||
53|13
|
||
|
||
75,47,61,53,29
|
||
97,61,53,29,13
|
||
75,29,13
|
||
75,97,47,61,53
|
||
61,13,29
|
||
97,13,75,29,47
|
||
"""
|
||
|
||
parsed_input = Aoc2024.Day05.parse(input)
|
||
assert Aoc2024.Day05.part1(parsed_input) == 143
|
||
assert Aoc2024.Day05.part2(parsed_input) == 123
|
||
end
|
||
end
|