def test_get_region_missing_indexes(self): layer = Layer(DATA_SET, ' ' * 81) self.assertEquals(layer.get_region_missing_indexes('row', 1), [7]) self.assertEquals(layer.get_region_missing_indexes('col', 79), [7]) self.assertEquals(layer.get_region_missing_indexes('block', 16), [7]) self.assertEquals(layer.get_region_missing_indexes('row', 30), [33]) self.assertEquals(layer.get_region_missing_indexes('col', 15), [33]) self.assertEquals(layer.get_region_missing_indexes('block', 35), [33]) self.assertEquals(layer.get_region_missing_indexes('row', 7), []) self.assertEquals(layer.get_region_missing_indexes('col', 7), []) self.assertEquals(layer.get_region_missing_indexes('block', 1), [])
def solve(data): SOLUTION = ' ' * 81 solver = BacktrackingSolver() # data = "XX3X2X6XX9XX3X5XX1XX18X64XXXX81X29XX7XXXXXXX8XX67X82XXXX26X95XX8XX2X3XX9XX5X1X3XX" layer = Layer(data, SOLUTION) sol = solver.solve(layer) d = list(data) for s in sol: d[s[0]] = s[1] return int("".join(d[:3]))
def setUp(self): self.layer = Layer(DATA_SET, SOLUTION)
class LayerTestCase(TestCase): def setUp(self): self.layer = Layer(DATA_SET, SOLUTION) def test_str(self): self.assertEquals(str(self.layer), '12345678923456789134567891245678912356789' \ '1234678912345789123456891234567912345678') def test_get_region_row(self): self.assertEquals(self.layer.get_region('row', 1), ['1', '2', '3', '4', '5', '6', '7', '8', '9']) self.assertEquals(self.layer.get_region('row', 7), ['1', '2', '3', '4', '5', '6', '7', '8', '9']) self.assertEquals(self.layer.get_region('row', 37), ['5', '6', '7', '8', '9', '1', '2', '3', '4']) self.assertEquals(self.layer.get_region('row', 78), ['9', '1', '2', '3', '4', '5', '6', '7', '8']) def test_get_region_col(self): self.assertEquals(self.layer.get_region('col', 0), ['1', '2', '3', '4', '5', '6', '7', '8', '9']) self.assertEquals(self.layer.get_region('col', 7), ['8', '9', '1', '2', '3', '4', '5', '6', '7']) self.assertEquals(self.layer.get_region('col', 37), ['2', '3', '4', '5', '6', '7', '8', '9', '1']) self.assertEquals(self.layer.get_region('col', 78), ['7', '8', '9', '1', '2', '3', '4', '5', '6']) def test_get_region_block(self): self.assertEquals(self.layer.get_region('block', 1), ['1', '2', '3', '2', '3', '4', '3', '4', '5']) self.assertEquals(self.layer.get_region('block', 7), ['7', '8', '9', '8', '9', '1', '9', '1', '2']) self.assertEquals(self.layer.get_region('block', 37), ['4', '5', '6', '5', '6', '7', '6', '7', '8']) self.assertEquals(self.layer.get_region('block', 48), ['7', '8', '9', '8', '9', '1', '9', '1', '2']) self.assertEquals(self.layer.get_region('block', 73), ['7', '8', '9', '8', '9', '1', '9', '1', '2']) self.assertEquals(self.layer.get_region('block', 78), ['4', '5', '6', '5', '6', '7', '6', '7', '8']) def test_get_region_index(self): self.assertRaises(KeyError, self.layer.get_region_index, 'toto', 12) self.assertEquals(self.layer.get_region_index('row', 0), 0) self.assertEquals(self.layer.get_region_index('col', 0), 0) self.assertEquals(self.layer.get_region_index('block', 0), 0) self.assertEquals(self.layer.get_region_index('row', 1), 0) self.assertEquals(self.layer.get_region_index('col', 1), 1) self.assertEquals(self.layer.get_region_index('block', 1), 0) self.assertEquals(self.layer.get_region_index('row', 17), 1) self.assertEquals(self.layer.get_region_index('col', 17), 8) self.assertEquals(self.layer.get_region_index('block', 17), 2) self.assertEquals(self.layer.get_region_index('row', 42), 4) self.assertEquals(self.layer.get_region_index('col', 42), 6) self.assertEquals(self.layer.get_region_index('block', 42), 5) self.assertEquals(self.layer.get_region_index('row', 78), 8) self.assertEquals(self.layer.get_region_index('col', 78), 6) self.assertEquals(self.layer.get_region_index('block', 78), 8)
def test_get_candidates(self): layer = Layer(DATA_SET, ' ' * 81) self.assertEquals(layer.get_candidates(7), set()) self.assertEquals(layer.get_candidates(8), set())
def test_get_excluded(self): layer = Layer(DATA_SET, ' ' * 81) self.assertEquals(layer.get_excluded(7), set(['1', '2', '3', '4', '5', '6', '7', '8', '9', 'X']))