def test_erase_pencil_rcn(self): s = SSR.construct_sudoku(verbose=self.verbose) rcn = [[2, 2, 4], [5, 6, 7]] SSR.erase_pencil_rcn(sudoku=s, rcn=rcn, verbose=self.verbose) # SSD.display_pencil(s) self.assertTrue(s[2, 2, 4] == 0) self.assertTrue(s[5, 6, 7] == 0)
def test_1(self): s = SSR.construct_sudoku(verbose=self.verbose) rows, cols, nums, blocks = SSR.unfinished_rcnbrbc(s, self.verbose) self.assertTrue(len(rows) == 9) self.assertTrue(len(cols) == 9) self.assertTrue(len(nums) == 9) self.assertTrue(len(blocks) == 9)
def test_1(self): """ """ s = SSR.construct_sudoku(verbose=self.verbose) s[0, 0, 1:10] = 0 s[1, 1, 0] = 2 SSR.check_sanity(s)
def test_init(self): """ """ s = SSR.construct_sudoku(verbose=self.verbose) self.assertTrue(numpy.shape(s) == (9, 9, 12)) self.assertTrue(s[0, 0, 10] == 0) self.assertTrue(s[1, 1, 10] == 0) self.assertTrue(s[1, 1, 11] == 0) self.assertTrue(s[3, 0, 10] == 1) self.assertTrue(s[3, 0, 11] == 0)
def test_1(self): """ """ s = SSR.construct_sudoku(verbose=self.verbose) res = SSR.check_finished(s) self.assertFalse(res) s[:, :, 0] = 1 res = SSR.check_finished(s) self.assertTrue(res)
def test_row(self): s = SSR.construct_sudoku(verbose=self.verbose) for i in range(9): s, f = SSR.fill_value(s, i, 0, i + 1, verbose=self.verbose) # SSD.display_pencil(s) rows, cols, nums, blocks = SSR.unfinished_rcnbrbc(s, self.verbose) # print(rows, cols, nums, blocks) self.assertTrue(len(rows) == 9) self.assertTrue(len(cols) == 8) self.assertTrue(len(nums) == 9) self.assertTrue(len(blocks) == 9)
def test_erase_pencil_col(self): s = SSR.construct_sudoku(verbose=self.verbose) SSR.erase_pencil_col(sudoku=s, except_r=[3, 4, 5], c=3, n=9, verbose=self.verbose) # SSD.display_pencil(s) self.assertTrue(numpy.all(s[0:3, 3, 9] == 0)) self.assertTrue(numpy.all(s[3:6, 3, 9] == 9)) self.assertTrue(numpy.all(s[6:, 3, 9] == 0))
def test_erase_pencil_row(self): s = SSR.construct_sudoku(verbose=self.verbose) SSR.erase_pencil_row(sudoku=s, r=0, except_c=[1, 2], n=1, verbose=self.verbose) # SSD.display_pencil(s) self.assertTrue(s[0, 0, 1] == 0) self.assertTrue(numpy.all(s[0, 1:3, 1] == 1)) self.assertTrue(numpy.all(s[0, 3:, 1] == 0))
def test_erase_pencil_block(self): s = SSR.construct_sudoku(verbose=self.verbose) SSR.erase_pencil_block(sudoku=s, br=1, bc=1, except_rc=[[3, 3], [4, 4], [5, 5]], n=9, verbose=self.verbose) # SSD.display_pencil(s) self.assertTrue(s[3, 3, 9] == 9) self.assertTrue(s[4, 4, 9] == 9) self.assertTrue(s[5, 5, 9] == 9) self.assertTrue(s[4:5, 3, 9] == 0) self.assertTrue(numpy.all(s[0:3, :, 9] == 9)) self.assertTrue(numpy.all(s[:, 0:3, 9] == 9))
def test_fill_2(self): """ """ s = SSR.construct_sudoku(verbose=self.verbose) r = 3 c = 1 n = 2 s, f = SSR.fill_value(s, r, c, n) self.assertTrue(s[3, 1, 0] == 2) # number is filled in self.assertTrue(numpy.all(s[3, 1, 1:10] == 0)) # pencils for num are 0 self.assertTrue(numpy.all(s[:, 1, 2] == 0)) # pencils in row are 0 self.assertTrue(numpy.all(s[3, :, 2] == 0)) # pencils in col are 0 self.assertTrue(numpy.all(s[3:6, 0:3, 2] == 0)) # pencils in block are 0
def test_fill_1(self): """ """ s = SSR.construct_sudoku(verbose=self.verbose) r = 0 c = 0 n = 1 s, f = SSR.fill_value(s, r, c, n) self.assertTrue(s[0, 0, 0] == 1) # number is filled in self.assertTrue(numpy.all(s[0, 0, 1:10] == 0)) # pencils for num are 0 self.assertTrue(numpy.all(s[:, 0, 1] == 0)) # pencils in row are 0 self.assertTrue(numpy.all(s[0, :, 1] == 0)) # pencils in col are 0 self.assertTrue(numpy.all(s[0:3, 0:3, 1] == 0)) # pencils in block are 0
def test_block(self): s = SSR.construct_sudoku(verbose=self.verbose) s, f = SSR.fill_value(s, 0, 0, 1, verbose=self.verbose) s, f = SSR.fill_value(s, 1, 0, 2, verbose=self.verbose) s, f = SSR.fill_value(s, 2, 0, 3, verbose=self.verbose) s, f = SSR.fill_value(s, 0, 1, 4, verbose=self.verbose) s, f = SSR.fill_value(s, 1, 1, 5, verbose=self.verbose) s, f = SSR.fill_value(s, 2, 1, 6, verbose=self.verbose) s, f = SSR.fill_value(s, 0, 2, 7, verbose=self.verbose) s, f = SSR.fill_value(s, 1, 2, 8, verbose=self.verbose) s, f = SSR.fill_value(s, 2, 2, 9, verbose=self.verbose) # SSD.display_pencil(s) rows, cols, nums, blocks = SSR.unfinished_rcnbrbc(s, self.verbose) # print(rows, cols, nums, blocks) self.assertTrue(len(rows) == 9) self.assertTrue(len(cols) == 9) self.assertTrue(len(nums) == 9) self.assertTrue(len(blocks) == 8)
def test_erase_pencil_n_array(self): s = SSR.construct_sudoku(verbose=self.verbose) SSR.erase_pencil(sudoku=s, r=0, c=0, n=[1, 2], verbose=self.verbose) # SSD.display_pencil(s) self.assertTrue(s[0, 0, 1] == 0) self.assertTrue(s[0, 0, 2] == 0)
def test_3(self): """ """ s = SSR.construct_sudoku(verbose=self.verbose) s[0:3, 0:3, 2] = 0 SSR.check_sanity(s)