#!/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)