def test_sudoku_solved(self): solved = [[4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4, 8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5, 2], [2, 4, 3, 6, 1, 5, 9, 8, 7]] self.assertTrue(sudoku_solved(solved)) wrong = [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]] self.assertFalse(sudoku_solved(wrong))
def test_with_not_solved_sudokus(self): self.assertFalse(solution.sudoku_solved([[2, 4, 8, 9, 5, 7, 1, 6], [5, 7, 1, 6, 2, 8, 3, 4, 9], [9, 3, 6, 4, 1, 5, 8, 2], [6, 8, 2, 5, 3, 9, 1, 7, 4], [3, 5, 9, 1, 4, 6, 2, ], [7, 1, 4, 8, 6, 2, 9, 5, 3], [8, 6, 3, 4, 1, 7, 2, 9, 5], [1, 5, 2, 8, 6, 4, 3, 7], [4, 2, 7, 9, 5, 8, 1]]))
def test_sudoku_2(self): self.assertTrue(not solution.sudoku_solved([ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]))
def test_True(self): self.assertTrue( sudoku_solved([[4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4, 8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5, 2], [2, 4, 3, 6, 1, 5, 9, 8, 7]]))
def test_with_correctly_solved_sudokus(self): self.assertTrue(solution.sudoku_solved([[2, 4, 8, 3, 9, 5, 7, 1, 6], [5, 7, 1, 6, 2, 8, 3, 4, 9], [9, 3, 6, 7, 4, 1, 5, 8, 2], [6, 8, 2, 5, 3, 9, 1, 7, 4], [3, 5, 9, 1, 7, 4, 6, 2, 8], [7, 1, 4, 8, 6, 2, 9, 5, 3], [8, 6, 3, 4, 1, 7, 2, 9, 5], [1, 9, 5, 2, 8, 6, 4, 3, 7], [4, 2, 7, 9, 5, 3, 8, 6, 1]])) self.assertTrue(solution.sudoku_solved([[4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4, 8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5, 2], [2, 4, 3, 6, 1, 5, 9, 8, 7]]))
def test_sudoku1(self): self.assertTrue(solution.sudoku_solved([ [4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4, 8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5, 2], [2, 4, 3, 6, 1, 5, 9, 8, 7]]))
def test_False(self): self.assertFalse( sudoku_solved([[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]))
def test_sudoku_solved2(self): self.assertEqual( False, solution.sudoku_solved([[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]))
def test_sudoku_solved_2(self): self.assertEqual(False, solution.sudoku_solved([ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9] ]))
def test_two(self): self.assertEquals(sudoku_solved([ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9] ]), False)
def test_sudoku_solved(self): sudoku1 = [ [4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4 ,8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5 ,2], [2, 4, 3, 6, 1, 5, 9, 8, 7] ] sudoku2 = [ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9] ] self.assertTrue(sudoku_solved(sudoku1)) self.assertFalse(sudoku_solved(sudoku2))
def test_not_solved(self): self.assertFalse(sudoku_solved([ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9] ]))
def test_sudoku_solved3(self): self.assertEqual(False, solution.sudoku_solved([ [1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7], [8, 8, 8, 8, 8, 8, 8, 8, 8], [9, 9, 9, 9, 9, 9, 9, 9, 9] ]))
def test_sudoku_solved3(self): self.assertEqual( False, solution.sudoku_solved([[1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7], [8, 8, 8, 8, 8, 8, 8, 8, 8], [9, 9, 9, 9, 9, 9, 9, 9, 9]]))
def test_sudoku_solved(self): self.assertTrue(True, sudoku_solved([[4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4, 8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5, 2], [2, 4, 3, 6, 1, 5, 9, 8, 7]])) # True self.assertFalse(False, sudoku_solved([[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]))
def test_sudoku_solved(self): self.assertEqual( True, solution.sudoku_solved([[4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4, 8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5, 2], [2, 4, 3, 6, 1, 5, 9, 8, 7]])) self.assertEqual( False, solution.sudoku_solved([[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]))
def test_problem_statement_cases(self): self.assertEqual(True, sudoku_solved([ [4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4 ,8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5 ,2], [2, 4, 3, 6, 1, 5, 9, 8, 7] ])) self.assertEqual(False, sudoku_solved([ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9] ]))
def SudokuSolvedTest(self): solved = [[4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4 ,8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5 ,2], [2, 4, 3, 6, 1, 5, 9, 8, 7]] not_solved = [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]] self.assertTrue(sudoku_solved(solved)) self.assertFalse(sudoku_solved(not_solved))
def test(self): self.assertEqual(True, solution.sudoku_solved([ [4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4 ,8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5 ,2], [2, 4, 3, 6, 1, 5, 9, 8, 7] ])) self.assertEqual(False, solution.sudoku_solved([ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9] ]))
def test_problem_statement_cases(self): self.assertEqual( True, sudoku_solved([[4, 5, 2, 3, 8, 9, 7, 1, 6], [3, 8, 7, 4, 6, 1, 2, 9, 5], [6, 1, 9, 2, 5, 7, 3, 4, 8], [9, 3, 5, 1, 2, 6, 8, 7, 4], [7, 6, 4, 9, 3, 8, 5, 2, 1], [1, 2, 8, 5, 7, 4, 6, 3, 9], [5, 7, 1, 8, 9, 2, 4, 6, 3], [8, 9, 6, 7, 4, 3, 1, 5, 2], [2, 4, 3, 6, 1, 5, 9, 8, 7]])) self.assertEqual( False, sudoku_solved([[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]))
def test_with_incorrectly_solved_sudokus(self): self.assertFalse(solution.sudoku_solved([list(range(9)) for i in range(9)]))