65 lines
2.4 KiB
Python
Executable File
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)
|