Exemple #1
0
 def load(self, name):
     
     size, info = all_grids[name]
 
     conds = {"=": EqualityCondition,
                 "+": SumCondition, "-": DifferenceCondition,
                 "*": ProductCondition, "/": DivisionCondition,
                 "u": lambda v: UniqueCondition}
     
     g = Grid(size)
 
     for i in info:
         if size == "sudoku":
             blk = Group(g)
         else:
             blk = Block(g)
         v, op = int(i[0][:-1]), i[0][-1]
         
         try:
             Cond = conds[op]
         except KeyError:
             log("0", "#", "Unknown Condition!", op, "value", v)
             continue
         else:
             cond = Cond(v)
         blk.set(cond)
         
         [blk.add(g.at(*cpos)) for cpos in i[1:]]
 
     g.setup()
     self.grid = g
    def test_wallbuilding(self):
        grid = Grid(7, 5)
        node14 = grid.nodes[(1, 4)]
        node24 = grid.nodes[(2, 4)]
        self.assertTrue(node24.is_connected(node14))
        self.assertTrue(node14.is_connected(node24))

        grid.register_west_wall((2, 3))

        self.assertFalse(node24.is_connected(node14))
        self.assertFalse(node14.is_connected(node24))
Exemple #3
0
    def test_v2(self):
        from main import parseInput, Grid
        biggest, coordinates = parseInput(sample1)
        testGrid = Grid(biggest)

        for line in coordinates:
            testGrid.placeLine(line)

        result = testGrid.findOverlaps()
        print("Map for V2")
        pp.pprint(testGrid.map)
        self.assertEqual(result, 12)
Exemple #4
0
    def test_markGrid(self):
        from main import parseInput, Grid, filterOutDiagonals
        biggest, coordinates = parseInput(sample0)
        coords = filterOutDiagonals(coordinates)
        testGrid = Grid(biggest)

        for line in coords:
            testGrid.placeLine(line)

        self.assertEqual(
            testGrid.map,
            [[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1], [1, 1, 1, 1]])
Exemple #5
0
    def test_v1(self):
        from main import parseInput, Grid, filterOutDiagonals
        biggest, coordinates = parseInput(sample1)
        coords = filterOutDiagonals(coordinates)
        testGrid = Grid(biggest)

        for line in coords:
            testGrid.placeLine(line)

        result = testGrid.findOverlaps()
        print("Map for V1")
        pp.pprint(testGrid.map)
        self.assertEqual(result, 5)
    def test_possible_wall_initialization(self):
        too_small = ((1, 1), (2, 1), (1, 2))
        for w, h in too_small:
            self.assertEqual(0, len(Grid(w, h).possible_walls))

        grid = Grid(2, 2)
        possibles = grid.possible_walls.keys()
        self.assertEqual(2, len(possibles))

        self.assertIn(Wall((1, 0), CONSTS.WALL_ORIENTATION_VERTICAL),
                      possibles)
        self.assertIn(Wall((0, 1), CONSTS.WALL_ORIENTATION_HORIZONTAL),
                      possibles)
 def test_is_free(self):
     grid = Grid(7, 5)
     self.assertTrue(grid.is_all_free(DIR.WEST, (2, 1), (2, 2)))
     grid.register_west_wall((2, 1))
     self.assertFalse(grid.is_all_free(DIR.WEST, (2, 1), (2, 2)))
     self.assertFalse(grid.is_all_free(DIR.WEST, (2, 2)))
     self.assertTrue(grid.is_all_free(DIR.WEST, (2, 3)))
Exemple #8
0
    def test_example(self):
        example = """.#.#...|#.
.....#|##|
.|..|...#.
..|#.....#
#.#|||#|#|
...#.||...
.|....|...
||...#|.#|
|.||||..|.
...#.|..|."""

        g = Grid(example.split("\n"))
        g.simulate(10)
        self.assertEqual(g.score(), 1147)
 def test_disconnect(self):
     grid = Grid(7, 5)
     self.assertTrue(grid.can_pass((3, 1), DIR.SOUTH))
     self.assertTrue(grid.can_pass((3, 2), DIR.NORTH))
     grid.register_north_wall((3, 2))
     self.assertFalse(grid.can_pass((3, 1), DIR.SOUTH))
     self.assertFalse(grid.can_pass((3, 2), DIR.NORTH))
 def test_can_build_west_wall(self):
     grid = Grid(7, 5)
     for i in (0, 1, 2, 3):
         self.assertTrue(grid.can_build_west_wall((2, i)),
                         "Should be able to build at %s" % i)
     grid.register_west_wall((2, 1))
     for i, expected in [
         (0, False),
         (1, False),
         (2, False),
         (3, True),
     ]:
         actual = grid.can_build_west_wall((2, i))
         self.assertEqual(
             actual, expected, "Got %s at %s instead of the expected %s" %
             (actual, i, expected))
Exemple #11
0
 def setUp(self):
     coordinates_list = ["0, 0", "3, 0", "0, 3", "3, 3", "2, 2"]
     self.test_grid = Grid(coordinates_list)
     self.test_coordinate = Coordinate("1, 2")
     self.test_coordinate_2 = Coordinate("2, 3")
Exemple #12
0
class GridTestCase(unittest.TestCase):
    def setUp(self):
        coordinates_list = ["0, 0", "3, 0", "0, 3", "3, 3", "2, 2"]
        self.test_grid = Grid(coordinates_list)
        self.test_coordinate = Coordinate("1, 2")
        self.test_coordinate_2 = Coordinate("2, 3")

    def test_init(self):
        self.assertEqual(self.test_grid.height, 4)
        self.assertEqual(self.test_grid.width, 4)

    def test_create(self):
        self.assertEqual(self.test_grid.grid,
                         [["", "", "", ""], ["", "", "", ""], ["", "", "", ""],
                          ["", "", "", ""]])

    def test_populate(self):
        self.test_grid.populate()
        self.assertEqual(self.test_grid.grid,
                         [["44", "", "", "46"], ["", "", "", ""],
                          ["", "", "48", ""], ["45", "", "", "47"]])

    def test_add(self):
        self.test_grid.add(self.test_coordinate)
        self.assertEqual(self.test_grid.grid,
                         [["", "", "", ""], ["", "", "7", ""],
                          ["", "", "", ""], ["", "", "", ""]])

    def test_get_manhattan_distance(self):
        self.test_grid.add(self.test_coordinate)
        self.test_grid.add(self.test_coordinate_2)
        self.assertEqual(
            self.test_grid.get_manhattan_distance(self.test_coordinate,
                                                  self.test_coordinate_2), 2)

    def test_find_nearest_point(self):
        self.test_grid.add(self.test_coordinate)
        self.test_grid.add(self.test_coordinate_2)
        self.assertEqual(
            self.test_grid.find_nearest_point(self.test_coordinate), 27)

    def test_add_nearest_points(self):
        self.test_grid.populate()
        self.test_grid.add_nearest_points()
        self.assertEqual(self.test_grid.grid,
                         [["12", 12, 14, "14"], [12, 0, 16, 14],
                          [13, 16, "16", 0], ["13", 13, 0, "15"]])
 def test_creation(self):
     grid = Grid(6, 4)
     self.assertIsNotNone(grid)
 def test_every_node_should_have_some_siblings(self):
     grid = Grid(7, 5)
     for node in grid.nodes.values():
         self.assertGreaterEqual(len(node.siblings), 2)
         self.assertLessEqual(len(node.siblings), 4)