Files
Aurélien Geron 9808ad404c Solve day 5
2024-12-09 10:19:50 +13:00

111 lines
2.1 KiB
Elixir
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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