예제 #1
0
	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"
예제 #2
0
	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"
예제 #3
0
	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"
예제 #4
0
	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"
예제 #5
0
	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
예제 #6
0
	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
예제 #7
0
	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
예제 #8
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)
예제 #9
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)
예제 #10
0
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"
예제 #11
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)
예제 #12
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
예제 #13
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)