예제 #1
0
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)]
예제 #2
0
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()
예제 #3
0
 def init_row_solvers(self):
     Nonogram.init_row_solvers(self, SimpleBoxesRowSolver)
예제 #4
0
 def init_row_solvers(self):
     Nonogram.init_row_solvers(self, BalancedRowSolver)
예제 #5
0
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
예제 #6
0
 def init_row_solvers(self):
     Nonogram.init_row_solvers(self, BlanksRowSolver)
예제 #7
0
 def init_row_solvers(self):
     Nonogram.init_row_solvers(self, BruteForceRowSolver)
예제 #8
0
 def init_row_solvers(self):
     Nonogram.init_row_solvers(self, TrivialRowSolver)