def valid_grid() -> Grid: return Grid([ [5, 3, 0, 0, 7, 0, 0, 0, 0], [6, 0, 0, 1, 9, 5, 0, 0, 0], [0, 9, 8, 0, 0, 0, 0, 6, 0], [8, 0, 0, 0, 6, 0, 0, 0, 3], [4, 0, 0, 8, 0, 3, 0, 0, 1], [7, 0, 0, 0, 2, 0, 0, 0, 6], [0, 6, 0, 0, 0, 0, 2, 8, 0], [0, 0, 0, 4, 1, 9, 0, 0, 5], [0, 0, 0, 0, 8, 0, 0, 7, 9], ])
def solved_grid() -> Grid: return Grid([ [2, 4, 9, 6, 5, 8, 3, 7, 1], [1, 3, 6, 2, 7, 9, 5, 8, 4], [7, 5, 8, 3, 1, 4, 2, 9, 6], [4, 8, 7, 9, 3, 5, 6, 1, 2], [3, 9, 2, 1, 6, 7, 4, 5, 8], [5, 6, 1, 4, 8, 2, 7, 3, 9], [9, 1, 3, 7, 4, 6, 8, 2, 5], [6, 2, 5, 8, 9, 3, 1, 4, 7], [8, 7, 4, 5, 2, 1, 9, 6, 3], ])
def __enter__(self): g = Grid(grid=self.grid) return g
] expert2 = [ [0, 0, 0, 0, 7, 0, 0, 0, 0], [0, 1, 0, 5, 0, 0, 8, 0, 0], [0, 0, 0, 0, 0, 1, 6, 4, 9], [0, 0, 8, 1, 0, 0, 0, 0, 0], [0, 0, 0, 3, 0, 0, 0, 0, 0], [0, 9, 0, 2, 0, 4, 0, 5, 3], [0, 0, 4, 0, 0, 0, 1, 0, 0], [0, 7, 3, 0, 0, 0, 9, 0, 0], [0, 0, 0, 0, 2, 0, 0, 0, 0], ] def str_to_array(s): out = [] ints = map(int, s) for i in range(0, 9): out.append(ints[i * 9:i * 9 + 9]) return out expert3 = str_to_array( "000000000801000340006400800004210000000030002100600079000008000600000054900002007" ) generated = Grid(generate=True) generated.exclusive_subgroups() generated.manual_solve()