def test_solve_row0_1(self):
		# given
		test_puzzle = Puzzle(3, 3, [[4, 1, 0], [2, 3, 5], [6, 7, 8]])

		# when
		result = test_puzzle.solve_row0_tile(2)

		# then
		assert result == "ldlurdlurrdluldrruld"
	def test_row0_invarient_2(self):
		# given 
		test_puzzle = Puzzle(4, 5, [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])

		# when
		result = test_puzzle.row0_invariant(0)

		# then
		assert result == True
	def test_solve_2x2_1(self):
		# given 
		test_puzzle = Puzzle(3, 3, [[4, 3, 2], [1, 0, 5], [6, 7, 8]])

		# when
		result = test_puzzle.solve_2x2()

		# then
		assert result == "uldrul"
	def test_lower_row_invariant_true_5(self):
		# given 
		test_puzzle = Puzzle(4, 5, [[7, 12, 11, 5, 3], [6, 2, 10, 9, 4], [1, 8, 13, 14, 0], [15, 16, 17, 18, 19]])

		# when
		result = test_puzzle.lower_row_invariant(2, 4)

		# then
		assert result == True
	def test_lower_row_invarient_false_5(self):
		# given
		test_puzzle = Puzzle(3, 3, [[0, 1, 2], [3, 4, 5], [6, 7, 8]])

		# when
		result = test_puzzle.lower_row_invariant(2, 0)

		# then
		assert result == False
	def test_row0_invarien_1(self):
		# given 
		test_puzzle = Puzzle(3, 3, [[0, 1, 2], [3, 4, 5], [6, 7, 8]])

		# when
		result = test_puzzle.row0_invariant(0)

		# then
		assert result == True
	def test_lower_row_invarient_false_6(self):
		# given
		test_puzzle = Puzzle(4, 5, [[15, 11, 10, 9, 8], [7, 6, 5, 4, 3], [2, 1, 0, 13, 14], [12, 16, 17, 18, 19]])

		# when
		result = test_puzzle.lower_row_invariant(2, 2)

		# then
		assert result == False
Beispiel #8
0
    def test_solve_2x2(self):
        fifteen = Puzzle(2, 2, [[3, 2],
                                [1, 0]]
                         )
        fifteen.solve_2x2()
        solved_fifteen = Puzzle(2, 2, [[0, 1],
                                       [2, 3]]
                                )
        self.assertEqual(fifteen._grid, solved_fifteen._grid)

        fifteen = Puzzle(3, 3, [[4, 3, 2],
                                [1, 0, 5],
                                [6, 7, 8]]
                         )
        solved_fifteen = Puzzle(3, 3, [[0, 1, 2],
                                       [3, 4, 5],
                                       [6, 7, 8]]
                                )
        fifteen.solve_2x2()
        self.assertEqual(fifteen._grid, solved_fifteen._grid)

        fifteen = Puzzle(5, 4, [[5, 4, 2, 3],
                                [1, 0, 6, 7],
                                [8, 9, 10, 11],
                                [12, 13, 14, 15],
                                [16, 17, 18, 19]])
        solved_fifteen = Puzzle(5, 4, [[0, 1, 2, 3],
                                       [4, 5, 6, 7],
                                       [8, 9, 10, 11],
                                       [12, 13, 14, 15],
                                       [16, 17, 18, 19]])
        fifteen.solve_2x2()
        self.assertEqual(fifteen._grid, solved_fifteen._grid)
	def test_solve_interior_tile_2(self):
		# given
		test_puzzle = Puzzle(3, 3, [[8, 7, 6], [5, 4, 3], [2, 1, 0]])

		# when
		assert test_puzzle.lower_row_invariant(2, 2)
		result = test_puzzle.solve_interior_tile(2, 2)
		assert test_puzzle.lower_row_invariant(2, 1)

		# then
		assert result == "uulldrruldrulddruld"
	def test_solve_col0_1(self):
		# given
		test_puzzle = Puzzle(3, 3, [[3, 2, 1], [6, 5, 4], [0, 7, 8]])

		# when
		assert test_puzzle.lower_row_invariant(2, 0)
		result = test_puzzle.solve_col0_tile(2)
		assert test_puzzle.lower_row_invariant(1, 2)

		# then
		assert result == "urr"
	def test_solve_interior_tile_2(self):
		# given
		test_puzzle = Puzzle(4, 4, [[11, 2, 3, 7], [8, 5, 6, 10], [9, 1, 11, 14], [13, 4, 0, 15]])

		# when
		assert test_puzzle.lower_row_invariant(3, 2)
		result = test_puzzle.solve_interior_tile(3, 2)
		assert test_puzzle.lower_row_invariant(3, 1)

		# then
		assert result == "urullddruld"
	def test_solve_col0_2(self):
		# given
		test_puzzle = Puzzle(4, 5, [[12, 11, 10, 9, 15], [7, 6, 5, 4, 3], [2, 1, 8, 13, 14], [0, 16, 17, 18, 19]])

		# when
		assert test_puzzle.lower_row_invariant(3, 0)
		result = test_puzzle.solve_col0_tile(3)
		print test_puzzle
		assert test_puzzle.lower_row_invariant(2, 4)

		# then
		assert result == "uruurrrdllurdllurdlludrulddruldruldrdlurdluurddlurrrr"
Beispiel #13
0
 def test_solve_row1_tile(self):
     fifteen = Puzzle(4, 4, [[4, 6, 1, 3],
                             [5, 2, 0, 7],
                             [8, 9, 10, 11],
                             [12, 13, 14, 15]]
                      )
     self.assertEqual(fifteen.solve_row1_tile(2), 'uldruldur')
     fifteen = Puzzle(4, 5, [[7, 6, 5, 3, 4],
                             [2, 1, 0, 8, 9],
                             [10, 11, 12, 13, 14],
                             [15, 16, 17, 18, 19]])
     self.assertEqual(fifteen.solve_row1_tile(2), 'ulldrruldruldur')
Beispiel #14
0
    def test_solve_row0_tile(self):
        fifteen = Puzzle(4, 4, [[4, 5, 0, 3],
                                [2, 1, 6, 7],
                                [8, 9, 10, 11],
                                [12, 13, 14, 15]]
                         )
        self.assertEqual(fifteen.solve_row0_tile(2), 'ldlurdlurrdluldrruld')

        fifteen = Puzzle(4, 5, [[1, 2, 0, 3, 4],
                                [6, 5, 7, 8, 9],
                                [10, 11, 12, 13, 14],
                                [15, 16, 17, 18, 19]])
        self.assertEqual(fifteen.solve_row0_tile(2), 'ld')
Beispiel #15
0
    def test_row1_invariant(self):
        fifteen = Puzzle(4, 4, [[4, 6, 1, 3],
                                [5, 2, 0, 7],
                                [8, 9, 10, 11],
                                [12, 13, 14, 15]]
                         )

        self.assertEqual(fifteen.row1_invariant(2), True)

        fifteen1 = Puzzle(4, 4, [[4, 6, 1, 3],
                                 [0, 2, 5, 7],
                                 [8, 9, 10, 11],
                                 [12, 13, 14, 15]]
                          )

        self.assertEqual(fifteen1.row1_invariant(2), False)
	def setup(self):
		self.test_lower_right_true_1 = Puzzle(4, 4, [[4, 2, 3, 7], [8, 5, 6, 10], [9, 1, 14, 11], [12, 13, 0, 15]])
		self.test_lower_right_true_2 = Puzzle(4, 4, [[4, 2, 3, 7], [8, 5, 6, 10], [9, 1, 0, 11], [12, 13, 14, 15]])
		self.test_lower_right_true_3 = Puzzle(4, 4, [[4, 2, 3, 1], [5, 0, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]])
		self.test_lower_right_true_4 = Puzzle(4, 4, [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]])
		self.test_lower_right_false_1 = Puzzle(4, 4, [[4, 2, 15, 7], [8, 5, 6, 10], [12, 1, 0, 11], [9, 13, 14, 3]])
		self.test_lower_right_false_2 = Puzzle(4, 4, [[4, 2, 3, 7], [8, 5, 6, 10], [12, 15, 0, 11], [9, 13, 14, 1]])
		self.test_lower_right_false_3 = Puzzle(4, 4, [[4, 2, 3, 1], [5, 0, 6, 7], [8, 9, 10, 11], [13, 12, 14, 15]])
		self.test_lower_right_false_4 = Puzzle(4, 4, [[0, 1, 2, 3], [7, 4, 6, 5], [8, 9, 10, 11], [12, 13, 14, 15]])
Beispiel #17
0
    def test_helper_solve_interior(self):
        fifteen = Puzzle(4, 4, [[4, 13, 1, 3],
                                [5, 10, 2, 7],
                                [8, 12, 6, 11],
                                [9, 0, 14, 15]]
                         )

        computed = fifteen.helper_solve_interior(target_solved_row=2, target_solved_col=2,
                                                 zero_row=3, zero_col=1,
                                                 solved_val_row=0, solved_val_col=1)
        self.assertEqual(computed, 'uulddruld')

        fifteen = Puzzle(4, 4, [[4, 13, 1, 3],
                                [5, 10, 2, 7],
                                [8, 12, 6, 11],
                                [9, 0, 14, 15]]
                         )

        computed = fifteen.helper_solve_interior(0, 3, zero_row=3, zero_col=1,
                                                 solved_val_row=0, solved_val_col=1)
Beispiel #18
0
 def test_solve_row1_tile(self):
     fifteen = Puzzle(
         4, 4,
         [[4, 6, 1, 3], [5, 2, 0, 7], [8, 9, 10, 11], [12, 13, 14, 15]])
     self.assertEqual(fifteen.solve_row1_tile(2), 'uldruldur')
     fifteen = Puzzle(4, 5, [[7, 6, 5, 3, 4], [2, 1, 0, 8, 9],
                             [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
     self.assertEqual(fifteen.solve_row1_tile(2), 'ulldrruldruldur')
Beispiel #19
0
    def test_solve_row0_tile(self):
        fifteen = Puzzle(
            4, 4,
            [[4, 5, 0, 3], [2, 1, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]])
        self.assertEqual(fifteen.solve_row0_tile(2), 'ldlurdlurrdluldrruld')

        fifteen = Puzzle(4, 5, [[1, 2, 0, 3, 4], [6, 5, 7, 8, 9],
                                [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
        self.assertEqual(fifteen.solve_row0_tile(2), 'ld')
Beispiel #20
0
    def test_row1_invariant(self):
        fifteen = Puzzle(
            4, 4,
            [[4, 6, 1, 3], [5, 2, 0, 7], [8, 9, 10, 11], [12, 13, 14, 15]])

        self.assertEqual(fifteen.row1_invariant(2), True)

        fifteen1 = Puzzle(
            4, 4,
            [[4, 6, 1, 3], [0, 2, 5, 7], [8, 9, 10, 11], [12, 13, 14, 15]])

        self.assertEqual(fifteen1.row1_invariant(2), False)
Beispiel #21
0
    def test_solve_puzzle(self):
        fifteen = Puzzle(4, 4, [[5, 3, 6, 7],
                                [2, 14, 15, 9],
                                [11, 8, 4, 1],
                                [0, 10, 13, 12]]

                         )
        # print(fifteen)
        # fifteen.solve_puzzle()
        # print(fifteen)

        fifteen = Puzzle(3, 3, [[8, 7, 6],
                                [5, 4, 3],
                                [2, 1, 0]]
                         )
        # print(fifteen)
        # fifteen.solve_puzzle()
        # print(fifteen)

        fifteen = Puzzle(4, 5, [[15, 16, 0, 3, 4],
                                [5, 6, 7, 8, 9],
                                [10, 11, 12, 13, 14],
                                [1, 2, 17, 18, 19]]
                         )
        # print(fifteen)
        # fifteen.solve_puzzle()
        # print(fifteen)
        fifteen = Puzzle(4, 5, [[15, 16, 0, 3, 4],
                                [5, 6, 7, 8, 9],
                                [10, 11, 12, 13, 14],
                                [1, 2, 17, 18, 19]],
                         'UNDER CONSTRUCTION'
                         )
        # print(fifteen)
        # print(fifteen.solve_puzzle())
        # print(fifteen)

        fifteen = Puzzle(2, 4, [[0, 3, 2, 7],
                                [4, 5, 6, 1]],
                         'UNDER CONSTRUCTION'
                         )
        print(fifteen)
        fifteen.solve_puzzle()
Beispiel #22
0
    def test_helper_solve_interior(self):
        fifteen = Puzzle(
            4, 4,
            [[4, 13, 1, 3], [5, 10, 2, 7], [8, 12, 6, 11], [9, 0, 14, 15]])

        computed = fifteen.helper_solve_interior(target_solved_row=2,
                                                 target_solved_col=2,
                                                 zero_row=3,
                                                 zero_col=1,
                                                 solved_val_row=0,
                                                 solved_val_col=1)
        self.assertEqual(computed, 'uulddruld')

        fifteen = Puzzle(
            4, 4,
            [[4, 13, 1, 3], [5, 10, 2, 7], [8, 12, 6, 11], [9, 0, 14, 15]])

        computed = fifteen.helper_solve_interior(0,
                                                 3,
                                                 zero_row=3,
                                                 zero_col=1,
                                                 solved_val_row=0,
                                                 solved_val_col=1)
Beispiel #23
0
 def test_row0_invariant(self):
     fifteen = Puzzle(
         4, 4,
         [[4, 2, 0, 3], [5, 1, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]])
Beispiel #24
0
    def test_solve_interior_tile(self):
        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0] = 4
        fifteen._grid[0][1] = 13
        fifteen._grid[0][2] = 1
        fifteen._grid[0][3] = 3
        fifteen._grid[1][0] = 5
        fifteen._grid[1][1] = 10
        fifteen._grid[1][2] = 2
        fifteen._grid[1][3] = 7
        fifteen._grid[2][0] = 8
        fifteen._grid[2][1] = 12
        fifteen._grid[2][2] = 6
        fifteen._grid[2][3] = 11
        fifteen._grid[3][0] = 9
        fifteen._grid[3][1] = 0
        fifteen._grid[3][2] = 14
        fifteen._grid[3][3] = 15

        self.assertEqual(fifteen.lower_row_invariant(3, 1), True)
        self.assertEqual(fifteen.lower_row_invariant(0, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(0, 1), False)
        self.assertEqual(fifteen.lower_row_invariant(0, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(0, 3), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 1), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 3), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 1), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 3), False)
        self.assertEqual(fifteen.lower_row_invariant(3, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(3, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(3, 3), False)

        fifteen.solve_interior_tile(3, 1)

        self.assertEqual(fifteen.lower_row_invariant(3, 0), True)

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0] = 14
        fifteen._grid[3][2] = 0

        fifteen.solve_interior_tile(3, 2)

        solved_through_strings = Puzzle(4, 4)
        solved_through_strings._grid[0][0] = 14
        solved_through_strings._grid[3][2] = 0
        solved_through_strings.update_puzzle('uuulldrruldrulddrulddruld')
        for val1, val2 in zip(fifteen._grid, solved_through_strings._grid):
            assert val1 == val2

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0] = 3
        fifteen._grid[0][-1] = 13
        fifteen._grid[3][1] = 0

        fifteen.solve_interior_tile(3, 1)

        fifteen = Puzzle(4, 4)
        fifteen._grid[2][1] = 10
        fifteen._grid[2][2] = 0
        fifteen._grid[0][0] = 9

        fifteen.solve_interior_tile(2, 2)

        fifteen = Puzzle(4, 4)
        fifteen._grid[2][1] = 11
        fifteen._grid[2][-1] = 0
        fifteen._grid[0][0] = 9

        fifteen.solve_interior_tile(2, 3)
Beispiel #25
0
    def test_solve_col0_tile(self):
        fifteen = Puzzle(4, 4)
        fifteen._grid[3][0] = 0
        fifteen._grid[2][3] = 11
        fifteen._grid[0][0] = 12

        fifteen.solve_col0_tile(3)

        fifteen = Puzzle(4, 4)
        fifteen._grid[3][0] = 0
        fifteen._grid[2][0] = 12
        fifteen._grid[0][0] = 8

        self.assertEqual(fifteen.solve_col0_tile(3), 'urrr', 'Test solve col0')
        self.assertEqual(fifteen._grid[2][3], 0, 'should be at end of row-1')

        obj = Puzzle(4, 5, [[12, 11, 10, 9, 15],
                            [7, 6, 5, 4, 3],
                            [2, 1, 8, 13, 14],
                            [0, 16, 17, 18, 19]])

        self.assertEqual(obj.solve_col0_tile(3), 'uruurrrdllurdllurdlulddruldruldrdlurdluurddlurrrr')
Beispiel #26
0
from fifteen import Puzzle

puzzle = Puzzle(4, 4)
print str(puzzle)
t = puzzle.lower_row_invariant(2, 2)
print t
#puzzle.set_number(0, 1, 13)
#puzzle.set_number(3, 1, 1)
puzzle.set_number(0, 0, 10)
puzzle.set_number(2, 2, 0)
print str(puzzle)
t = puzzle.lower_row_invariant(2, 2)
print t
Beispiel #27
0
    def test_solve_col0_tile(self):
        fifteen = Puzzle(4, 4)
        fifteen._grid[3][0] = 0
        fifteen._grid[2][3] = 11
        fifteen._grid[0][0] = 12

        fifteen.solve_col0_tile(3)

        fifteen = Puzzle(4, 4)
        fifteen._grid[3][0] = 0
        fifteen._grid[2][0] = 12
        fifteen._grid[0][0] = 8

        self.assertEqual(fifteen.solve_col0_tile(3), 'urrr', 'Test solve col0')
        self.assertEqual(fifteen._grid[2][3], 0, 'should be at end of row-1')

        obj = Puzzle(4, 5, [[12, 11, 10, 9, 15], [7, 6, 5, 4, 3],
                            [2, 1, 8, 13, 14], [0, 16, 17, 18, 19]])

        self.assertEqual(obj.solve_col0_tile(3),
                         'uruurrrdllurdllurdlulddruldruldrdlurdluurddlurrrr')
class TestPuzzle(object):

	@pytest.fixture(autouse=True)
	def setup(self):
		self.test_lower_right_true_1 = Puzzle(4, 4, [[4, 2, 3, 7], [8, 5, 6, 10], [9, 1, 14, 11], [12, 13, 0, 15]])
		self.test_lower_right_true_2 = Puzzle(4, 4, [[4, 2, 3, 7], [8, 5, 6, 10], [9, 1, 0, 11], [12, 13, 14, 15]])
		self.test_lower_right_true_3 = Puzzle(4, 4, [[4, 2, 3, 1], [5, 0, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]])
		self.test_lower_right_true_4 = Puzzle(4, 4, [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]])
		self.test_lower_right_false_1 = Puzzle(4, 4, [[4, 2, 15, 7], [8, 5, 6, 10], [12, 1, 0, 11], [9, 13, 14, 3]])
		self.test_lower_right_false_2 = Puzzle(4, 4, [[4, 2, 3, 7], [8, 5, 6, 10], [12, 15, 0, 11], [9, 13, 14, 1]])
		self.test_lower_right_false_3 = Puzzle(4, 4, [[4, 2, 3, 1], [5, 0, 6, 7], [8, 9, 10, 11], [13, 12, 14, 15]])
		self.test_lower_right_false_4 = Puzzle(4, 4, [[0, 1, 2, 3], [7, 4, 6, 5], [8, 9, 10, 11], [12, 13, 14, 15]])

	def test_lower_row_invariant_true_1(self):
		# when
		result = self.test_lower_right_true_1.lower_row_invariant(3, 2)

		# then
		assert result == True
		
	def test_lower_row_invariant_true_2(self):
		# when
		result = self.test_lower_right_true_2.lower_row_invariant(2, 2)

		# then

	def test_lower_row_invariant_true_3(self):
		# when
		result = self.test_lower_right_true_3.lower_row_invariant(1, 1)

		# then
		assert result == True

	def test_lower_row_invariant_true_4(self):
		# when
		result = self.test_lower_right_true_4.lower_row_invariant(0, 0)

		# then
		assert result == True

	def test_lower_row_invariant_true_5(self):
		# given 
		test_puzzle = Puzzle(4, 5, [[7, 12, 11, 5, 3], [6, 2, 10, 9, 4], [1, 8, 13, 14, 0], [15, 16, 17, 18, 19]])

		# when
		result = test_puzzle.lower_row_invariant(2, 4)

		# then
		assert result == True

	def test_lower_row_invariant_false_1(self):
		# when
		result = self.test_lower_right_false_1.lower_row_invariant(3, 2)

		# then
		assert result == False

	def test_lower_row_invariant_false_2(self):
		# when
		result = self.test_lower_right_false_2.lower_row_invariant(2, 2)

		# then
		assert result == False

	def test_lower_row_invariant_false_3(self):
		# when
		result = self.test_lower_right_false_3.lower_row_invariant(1, 1)

		# then
		assert result == False

	def test_lower_row_invariant_false_4(self):
		# when
		result = self.test_lower_right_false_4.lower_row_invariant(0, 0)

		# then
		assert result == False

	def test_lower_row_invarient_false_5(self):
		# given
		test_puzzle = Puzzle(3, 3, [[0, 1, 2], [3, 4, 5], [6, 7, 8]])

		# when
		result = test_puzzle.lower_row_invariant(2, 0)

		# then
		assert result == False

	def test_lower_row_invarient_false_6(self):
		# given
		test_puzzle = Puzzle(4, 5, [[15, 11, 10, 9, 8], [7, 6, 5, 4, 3], [2, 1, 0, 13, 14], [12, 16, 17, 18, 19]])

		# when
		result = test_puzzle.lower_row_invariant(2, 2)

		# then
		assert result == False

	def test_solve_interior_tile_1(self):
		# given
		test_puzzle = Puzzle(4, 4, [[6, 2, 3, 7], [8, 5, 14, 10], [9, 1, 11, 12], [13, 4, 0, 15]])

		# when
		assert test_puzzle.lower_row_invariant(3, 2)
		result = test_puzzle.solve_interior_tile(3, 2)
		print test_puzzle
		assert test_puzzle.lower_row_invariant(3, 1)

		# then
		assert result == "uulddruld"

	def test_solve_interior_tile_2(self):
		# given
		test_puzzle = Puzzle(4, 4, [[11, 2, 3, 7], [8, 5, 6, 10], [9, 1, 11, 14], [13, 4, 0, 15]])

		# when
		assert test_puzzle.lower_row_invariant(3, 2)
		result = test_puzzle.solve_interior_tile(3, 2)
		assert test_puzzle.lower_row_invariant(3, 1)

		# then
		assert result == "urullddruld"

	def test_solve_interior_tile_2(self):
		# given
		test_puzzle = Puzzle(3, 3, [[8, 7, 6], [5, 4, 3], [2, 1, 0]])

		# when
		assert test_puzzle.lower_row_invariant(2, 2)
		result = test_puzzle.solve_interior_tile(2, 2)
		assert test_puzzle.lower_row_invariant(2, 1)

		# then
		assert result == "uulldrruldrulddruld"

	def test_solve_col0_1(self):
		# given
		test_puzzle = Puzzle(3, 3, [[3, 2, 1], [6, 5, 4], [0, 7, 8]])

		# when
		assert test_puzzle.lower_row_invariant(2, 0)
		result = test_puzzle.solve_col0_tile(2)
		assert test_puzzle.lower_row_invariant(1, 2)

		# then
		assert result == "urr"

	def test_solve_col0_2(self):
		# given
		test_puzzle = Puzzle(4, 5, [[12, 11, 10, 9, 15], [7, 6, 5, 4, 3], [2, 1, 8, 13, 14], [0, 16, 17, 18, 19]])

		# when
		assert test_puzzle.lower_row_invariant(3, 0)
		result = test_puzzle.solve_col0_tile(3)
		print test_puzzle
		assert test_puzzle.lower_row_invariant(2, 4)

		# then
		assert result == "uruurrrdllurdllurdlludrulddruldruldrdlurdluurddlurrrr"

	def test_row0_invarien_1(self):
		# given 
		test_puzzle = Puzzle(3, 3, [[0, 1, 2], [3, 4, 5], [6, 7, 8]])

		# when
		result = test_puzzle.row0_invariant(0)

		# then
		assert result == True

	def test_row0_invarient_2(self):
		# given 
		test_puzzle = Puzzle(4, 5, [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])

		# when
		result = test_puzzle.row0_invariant(0)

		# then
		assert result == True

	def test_solve_row0_1(self):
		# given
		test_puzzle = Puzzle(3, 3, [[4, 1, 0], [2, 3, 5], [6, 7, 8]])

		# when
		result = test_puzzle.solve_row0_tile(2)

		# then
		assert result == "ldlurdlurrdluldrruld"

	def test_solve_2x2_1(self):
		# given 
		test_puzzle = Puzzle(3, 3, [[4, 3, 2], [1, 0, 5], [6, 7, 8]])

		# when
		result = test_puzzle.solve_2x2()

		# then
		assert result == "uldrul"
Beispiel #29
0
    def test_solve_interior_tile(self):
        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0] = 4
        fifteen._grid[0][1] = 13
        fifteen._grid[0][2] = 1
        fifteen._grid[0][3] = 3
        fifteen._grid[1][0] = 5
        fifteen._grid[1][1] = 10
        fifteen._grid[1][2] = 2
        fifteen._grid[1][3] = 7
        fifteen._grid[2][0] = 8
        fifteen._grid[2][1] = 12
        fifteen._grid[2][2] = 6
        fifteen._grid[2][3] = 11
        fifteen._grid[3][0] = 9
        fifteen._grid[3][1] = 0
        fifteen._grid[3][2] = 14
        fifteen._grid[3][3] = 15

        self.assertEqual(fifteen.lower_row_invariant(3, 1), True)
        self.assertEqual(fifteen.lower_row_invariant(0, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(0, 1), False)
        self.assertEqual(fifteen.lower_row_invariant(0, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(0, 3), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 1), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(1, 3), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 1), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(2, 3), False)
        self.assertEqual(fifteen.lower_row_invariant(3, 0), False)
        self.assertEqual(fifteen.lower_row_invariant(3, 2), False)
        self.assertEqual(fifteen.lower_row_invariant(3, 3), False)

        fifteen.solve_interior_tile(3, 1)

        self.assertEqual(fifteen.lower_row_invariant(3, 0), True)

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0] = 14
        fifteen._grid[3][2] = 0

        fifteen.solve_interior_tile(3, 2)

        solved_through_strings = Puzzle(4, 4)
        solved_through_strings._grid[0][0] = 14
        solved_through_strings._grid[3][2] = 0
        solved_through_strings.update_puzzle('uuulldrruldrulddrulddruld')
        for val1, val2 in zip(fifteen._grid, solved_through_strings._grid):
            assert val1 == val2

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0] = 3
        fifteen._grid[0][-1] = 13
        fifteen._grid[3][1] = 0

        fifteen.solve_interior_tile(3, 1)

        fifteen = Puzzle(4, 4)
        fifteen._grid[2][1] = 10
        fifteen._grid[2][2] = 0
        fifteen._grid[0][0] = 9

        fifteen.solve_interior_tile(2, 2)

        fifteen = Puzzle(4, 4)
        fifteen._grid[2][1] = 11
        fifteen._grid[2][-1] = 0
        fifteen._grid[0][0] = 9

        fifteen.solve_interior_tile(2, 3)
Beispiel #30
0
    def test_solve_2x2(self):
        fifteen = Puzzle(2, 2, [[3, 2], [1, 0]])
        fifteen.solve_2x2()
        solved_fifteen = Puzzle(2, 2, [[0, 1], [2, 3]])
        self.assertEqual(fifteen._grid, solved_fifteen._grid)

        fifteen = Puzzle(3, 3, [[4, 3, 2], [1, 0, 5], [6, 7, 8]])
        solved_fifteen = Puzzle(3, 3, [[0, 1, 2], [3, 4, 5], [6, 7, 8]])
        fifteen.solve_2x2()
        self.assertEqual(fifteen._grid, solved_fifteen._grid)

        fifteen = Puzzle(5, 4, [[5, 4, 2, 3], [1, 0, 6, 7], [8, 9, 10, 11],
                                [12, 13, 14, 15], [16, 17, 18, 19]])
        solved_fifteen = Puzzle(5, 4,
                                [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11],
                                 [12, 13, 14, 15], [16, 17, 18, 19]])
        fifteen.solve_2x2()
        self.assertEqual(fifteen._grid, solved_fifteen._grid)
Beispiel #31
0
    def test_solve_puzzle(self):
        fifteen = Puzzle(
            4, 4,
            [[5, 3, 6, 7], [2, 14, 15, 9], [11, 8, 4, 1], [0, 10, 13, 12]])
        # print(fifteen)
        # fifteen.solve_puzzle()
        # print(fifteen)

        fifteen = Puzzle(3, 3, [[8, 7, 6], [5, 4, 3], [2, 1, 0]])
        # print(fifteen)
        # fifteen.solve_puzzle()
        # print(fifteen)

        fifteen = Puzzle(4, 5, [[15, 16, 0, 3, 4], [5, 6, 7, 8, 9],
                                [10, 11, 12, 13, 14], [1, 2, 17, 18, 19]])
        # print(fifteen)
        # fifteen.solve_puzzle()
        # print(fifteen)
        fifteen = Puzzle(4, 5, [[15, 16, 0, 3, 4], [5, 6, 7, 8, 9],
                                [10, 11, 12, 13, 14], [1, 2, 17, 18, 19]],
                         'UNDER CONSTRUCTION')
        # print(fifteen)
        # print(fifteen.solve_puzzle())
        # print(fifteen)

        fifteen = Puzzle(2, 4, [[0, 3, 2, 7], [4, 5, 6, 1]],
                         'UNDER CONSTRUCTION')
        print(fifteen)
        fifteen.solve_puzzle()
Beispiel #32
0
    def test_lower_row_invariant(self):
        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0], fifteen._grid[2][1] = fifteen._grid[2][1], \
                                                   fifteen._grid[0][0]
        self.assertEqual(fifteen.lower_row_invariant(2, 1), True)

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0], fifteen._grid[2][1] = fifteen._grid[2][1], \
                                                   fifteen._grid[0][0]
        fifteen._grid[0][1], fifteen._grid[3][2] = fifteen._grid[3][2], \
                                                   fifteen._grid[0][1]
        self.assertEqual(fifteen.lower_row_invariant(2, 1), False)

        fifteen = Puzzle(4, 4)
        self.assertEqual(fifteen.lower_row_invariant(0, 0), True)

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][1], fifteen._grid[0][2] = fifteen._grid[0][2], \
                                                   fifteen._grid[0][1]
        self.assertEqual(fifteen.lower_row_invariant(0, 0), False)
Beispiel #33
0
    def test_lower_row_invariant(self):
        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0], fifteen._grid[2][1] = fifteen._grid[2][1], \
                                                   fifteen._grid[0][0]
        self.assertEqual(fifteen.lower_row_invariant(2, 1), True)

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][0], fifteen._grid[2][1] = fifteen._grid[2][1], \
                                                   fifteen._grid[0][0]
        fifteen._grid[0][1], fifteen._grid[3][2] = fifteen._grid[3][2], \
                                                   fifteen._grid[0][1]
        self.assertEqual(fifteen.lower_row_invariant(2, 1), False)

        fifteen = Puzzle(4, 4)
        self.assertEqual(fifteen.lower_row_invariant(0, 0), True)

        fifteen = Puzzle(4, 4)
        fifteen._grid[0][1], fifteen._grid[0][2] = fifteen._grid[0][2], \
                                                   fifteen._grid[0][1]
        self.assertEqual(fifteen.lower_row_invariant(0, 0), False)