Whatever
This commit is contained in:
parent
801fe8fd73
commit
6c35fae822
|
@ -60,13 +60,34 @@ def get_constraints(board: list, border: list, pos: int) -> list:
|
|||
constraints = [colup, coldown, rowleft, rowright]
|
||||
return constraints
|
||||
|
||||
def check_constraint(slice: list, constraint: int) -> bool:
|
||||
print(f'{slice=}')
|
||||
print(f'0 in slice: {0 in slice}')
|
||||
if 0 in slice:
|
||||
return True
|
||||
level = 0
|
||||
visible_towers = 0
|
||||
for tower in slice:
|
||||
if tower > level:
|
||||
level = tower
|
||||
visible_towers += 1
|
||||
print(f'{visible_towers=} vs {constraint=}')
|
||||
return visible_towers == int(constraint)
|
||||
|
||||
def is_valid_state(board: list, border: list, next_candidate_index: int) -> bool:
|
||||
print_board(board, border)
|
||||
row = get_row(board, next_candidate_index)
|
||||
column = get_col(board, next_candidate_index)
|
||||
constraints = get_constraints(board, border, next_candidate_index)
|
||||
print(f'{constraints=}, {row=}, {column=}')
|
||||
return True
|
||||
satisfies_constraints = all([
|
||||
check_constraint(row, constraints[2]),
|
||||
check_constraint(row[::-1], constraints[3]),
|
||||
check_constraint(column, constraints[0]),
|
||||
check_constraint(column[::-1], constraints[1])
|
||||
])
|
||||
print(f'{satisfies_constraints=}')
|
||||
return satisfies_constraints
|
||||
|
||||
def print_board(board: list, border: list) -> None:
|
||||
padding = ' ' * PADDING
|
||||
|
@ -84,6 +105,8 @@ def print_board(board: list, border: list) -> None:
|
|||
print(' '.join(border[board_dim:board_dim * 2]))
|
||||
print()
|
||||
|
||||
# 2D board initialized with 0's, dependent on n
|
||||
# params: rec-depth, n, **board, **border
|
||||
def backtrack(board: list, sols: list, border: list) -> None:
|
||||
if board.count(0) == 0:
|
||||
sols.append(board)
|
||||
|
|
Loading…
Reference in New Issue