Exemple #1
0
def prepareRemainingCandidates(grid):
    logging.disable(logging.WARNING)
    nakedSingleResolution = NakedSingleResolution()
    for x in range(SIZE):
        for y in range(SIZE):
            nakedSingleResolution.horizontal_naked_single(grid, x, y)
            nakedSingleResolution.vertical_naked_single(grid, x, y)
            nakedSingleResolution.block_naked_single(grid, x, y)
    logging.disable(logging.NOTSET)
class TestNakedSingleResolution(unittest.TestCase):
    def setUp(self):
        self.nakedSingleResolution = NakedSingleResolution()

    def test_horizontal_naked_single_complete_line(self):
        grid = Grid(StringIO(".........\n.23456789\n.........\n.234.6789\n.........\n.........\n.........\n.........\n.........\n"))
        self.assertEqual(True, self.nakedSingleResolution.horizontal_naked_single(grid, 0, 1))
        self.assertEqual(False, self.nakedSingleResolution.horizontal_naked_single(grid, 0, 3))
        self.assertEqual(".........\n123456789\n.........\n.234.6789\n.........\n.........\n.........\n.........\n.........\n", grid.display())

    def test_vertical_naked_single_complete_column(self):
        grid = Grid(StringIO("...1..9..\n...2..8..\n...3.....\n......6..\n...5..5..\n...6..4..\n......3..\n...8..2..\n...9..1..\n"))
        self.assertEqual(True, self.nakedSingleResolution.vertical_naked_single(grid, 6, 2))
        self.assertEqual(False, self.nakedSingleResolution.vertical_naked_single(grid, 3, 3))
        self.assertEqual("...1..9..\n...2..8..\n...3..7..\n......6..\n...5..5..\n...6..4..\n......3..\n...8..2..\n...9..1..\n", grid.display())

    def test_block_naked_single_complete_block(self):
        grid = Grid(StringIO("...123...\n...456...\n...78....\n1.3......\n.56......\n789......\n.........\n.........\n.........\n"))
        self.assertEqual(True, self.nakedSingleResolution.block_naked_single(grid, 5, 2))
        self.assertEqual(False, self.nakedSingleResolution.block_naked_single(grid, 1, 3))
        self.assertEqual("...123...\n...456...\n...789...\n1.3......\n.56......\n789......\n.........\n.........\n.........\n", grid.display())

    def test_horizontal_naked_single_generic(self):
        grid = Grid(StringIO(".1.2.3.4.\n.........\n.........\n.........\n.........\n.........\n.........\n.........\n.........\n"))
        self.assertEqual(False, self.nakedSingleResolution.horizontal_naked_single(grid, 0, 0))
        self.assertItemsEqual([5,6,7,8,9], grid.candidates[0][0])

    def test_vertical_naked_single_generic(self):
        grid = Grid(StringIO(".1.......\n.2.......\n.........\n.4.......\n.5.......\n.........\n.7.......\n.........\n.9.......\n"))
        self.assertEqual(False, self.nakedSingleResolution.vertical_naked_single(grid, 1, 2))
        self.assertItemsEqual([3,6,8], grid.candidates[1][2])

    def test_block_naked_single_generic(self):
        grid = Grid(StringIO(".12......\n7.8......\n9........\n.........\n.........\n.........\n.........\n.........\n.........\n"))
        self.assertEqual(False, self.nakedSingleResolution.block_naked_single(grid, 0, 0))
        self.assertItemsEqual([3,4,5,6], grid.candidates[0][0])

    def test_run(self):
        grid = Grid(StringIO(".......1.\n.23456789\n.......6.\n65.....2.\n879......\n321....4.\n.......5.\n.......9.\n.......7.\n"))
        self.assertEqual(3, self.nakedSingleResolution.run(grid)) # 3 solved cells
        self.assertEqual(".......1.\n123456789\n.......6.\n654....2.\n879....3.\n321....4.\n.......5.\n.......9.\n.......7.\n", grid.display())
 def setUp(self):
     self.nakedSingleResolution = NakedSingleResolution()