2023/day11/test.py
2023-12-11 11:15:05 +01:00

65 lines
2.4 KiB
Python
Executable File

#!/usr/bin/env python3.11
import logging
from unittest import TestCase, main
from common import Coordinate, parse, pairs_of_stars
from part1 import part1
from part2 import part2
class Day11Test(TestCase):
def test_parse(self):
universe_map = [
[Coordinate(x, 0, ".") for x in range(4)]
+ [Coordinate(4, 0, "#")]
+ [Coordinate(x, 0, ".") for x in range(5, 13)],
[Coordinate(x, 1, ".") for x in range(9)]
+ [Coordinate(9, 1, "#")]
+ [Coordinate(x, 1, ".") for x in range(10, 13)],
[Coordinate(0, 2, "#")] + [Coordinate(x, 2, ".") for x in range(1, 13)],
[Coordinate(x, 3, ".") for x in range(13)],
[Coordinate(x, 4, ".") for x in range(13)],
[Coordinate(x, 5, ".") for x in range(8)]
+ [Coordinate(8, 5, "#")]
+ [Coordinate(x, 5, ".") for x in range(9, 13)],
[Coordinate(0, 6, "."), Coordinate(1, 6, "#")]
+ [Coordinate(x, 6, ".") for x in range(2, 13)],
[Coordinate(x, 7, ".") for x in range(12)] + [Coordinate(12, 7, "#")],
[Coordinate(x, 8, ".") for x in range(13)],
[Coordinate(x, 9, ".") for x in range(13)],
[Coordinate(x, 10, ".") for x in range(9)]
+ [Coordinate(9, 10, "#")]
+ [Coordinate(x, 10, ".") for x in range(10, 13)],
[Coordinate(0, 11, "#")]
+ [Coordinate(x, 11, ".") for x in range(1, 5)]
+ [Coordinate(5, 11, "#")]
+ [Coordinate(x, 11, ".") for x in range(6, 13)],
]
stars = [
Coordinate(4, 0, "#"),
Coordinate(9, 1, "#"),
Coordinate(0, 2, "#"),
Coordinate(8, 5, "#"),
Coordinate(1, 6, "#"),
Coordinate(12, 7, "#"),
Coordinate(9, 10, "#"),
Coordinate(0, 11, "#"),
Coordinate(5, 11, "#"),
]
universe = parse("example_input.txt")
self.assertEqual(universe_map, universe.get_map())
self.assertEqual(stars, universe.stars)
def test_part1(self):
self.assertEqual(374, part1(pairs_of_stars(parse("example_input.txt"))))
def test_part2(self):
self.assertEqual(1030, part2(parse("example_input.txt", part=2), factor=10))
self.assertEqual(8410, part2(parse("example_input.txt", part=2), factor=100))
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
main(verbosity=2)