def test_nonogram_init(): string_box = ['.ooo.', '.....', '.....', '.....', '.....'] nonogram = Nonogram() nonogram.init_from_solution_string(string_box) assert len(nonogram.rows_constraints) == 5 assert len(nonogram.cols_constraints) == 5 assert nonogram.rows_constraints[0] == [3] assert nonogram.rows_constraints[1:] == [[], [], [], []] assert nonogram.cols_constraints[0] == [] assert nonogram.cols_constraints[1:4] == [[1], [1], [1]] assert nonogram.cols_constraints[4] == [] assert sorted(nonogram.solution_list) == [(0, 1), (0, 2), (0, 3)]
def solve_nonogram( verticals: List[List[int]], horizontals: List[List[int]], ) -> List[List[Optional[int]]]: """Function for solve given nonogram.""" nonogram = Nonogram( verticals=verticals, horizontals=horizontals, ) solver = Solver(nonogram=nonogram) return solver.solve_all()
def init_row_solvers(self): Nonogram.init_row_solvers(self, SimpleBoxesRowSolver)
def init_row_solvers(self): Nonogram.init_row_solvers(self, BalancedRowSolver)
def simple_nonogram_from_string_box(): string_box = ['o..o.', '..o.o', '..oo.', '.o..o', 'o...o'] nonogram = Nonogram() nonogram.init_from_solution_string(string_box) return nonogram
def init_row_solvers(self): Nonogram.init_row_solvers(self, BlanksRowSolver)
def init_row_solvers(self): Nonogram.init_row_solvers(self, BruteForceRowSolver)
def init_row_solvers(self): Nonogram.init_row_solvers(self, TrivialRowSolver)