def place(self, val): row, col = self.selected if self.cubes[row][col].value == 0: self.cubes[row][col].set(val) self.update_model() if valid(self.model, val, (row, col)) and solve(self.model): return True else: self.cubes[row][col].set(0) self.cubes[row][col].set_temp(0) self.update_model() return False
def auto_solver(): global board for y in range(9): for x in range(9): if board[y][x] == 0: for n in range(1, 10): if valid(board, n, (y, x)): board[y][x] = n auto_solver() board[y][x] = 0 return display(board)
def place(self, val): """Places a specified value into the grid.""" row, col = self.selected if self.cubes[row][col].value == 0: self.cubes[row][col].set(val) self.update_model() if valid(self.model, val, (row, col)): return True else: self.cubes[row][col].set(0) self.cubes[row][col].set_temp(0) self.update_model() return False
def place_value(self, val): row, col = self.selected # get row and col of selected box if self.boxes[row][col].get_value() == 0: # no value has been placed self.boxes[row][col].set_value(val) # set box value to val self.update_model() # update model if valid(self.model, val, (row, col)) or solve( self.model): # if value is valid for box and solved return True else: self.boxes[row][col].set_value(0) # set value back to 0 self.boxes[row][col].set_tmp(0) # set tmp back to 0 self.update_model() # update model return False
def solve(bo): find = solver.find_empty(bo) if not find: return True else: row, col = find for i in range(1, 10): if solver.valid(bo, i, (row, col)): bo[row][col] = i if solve(bo): return True bo[row][col] = 0 return False
def solve(bo): find = find_empty(bo) if not find: return True else: row, col = find for i in range(1, 10): if valid(bo, i, find): bo[row][col] = i draw_val(i) if solve(bo): return True bo[row][col] = 0 return False
def view_solns(): line = request.args.get('input', '', type=str) sort = request.args.get('sortby', 'scoreD', type=str) # validate if sort not in solver.SORT_ORDERS: sort = 'scoreD' if not solver.valid(line): return render_template('badinput.html') board, mults = solver.extract_board(line) data = { 'board': ''.join(board), 'mults': mults, 'lettervals': solver.LETTER_VALS, 'line': line, 'sortby': sort, } return render_template('viewer.html', **data)
def solve(self): find = find_empty(self.board) if not find: return True else: row, col = find for i in range(1, 10): if valid(self.board, i, (row, col)): self.board[row][col] = i if self.solve(): return True # backtrack to last element self.board[row][col] = 0 return False
def solve(self): find = find_empty(self.model) if not find: return True else: row, col = find for i in range(1, 10): if valid(self.model, i, (row, col)): self.model[row][col] = i if self.solve(): return True self.model[row][col] = 0 return False
def initialise(self): find = self.find_next() if not find: return True else: row, col = find for i in range(1, 10): if solver.valid(self.board, i, (row, col)): self.board[row][col] = i self.selected[row][col] = 0 if solver.solve(copy.deepcopy(self.board)): if self.initialise(): return True self.board[row][col] = 0 self.selected[row][col] = 1 return False
def place(self, val: int) -> bool: """Confirms the number entered is valid and places it permanently. Args: val (int): Number to be placed. Returns: bool: True if valid, otherwise False. """ row, col = self.selected if self.cubes[row][col].value == 0: self.cubes[row][col].set(val) self.update_model() if valid(self.model, val, (row, col)) and solve(self.model): return True else: self.cubes[row][col].set(0) self.cubes[row][col].set_temp(0) self.update_model() return False
def display_solution(win, board, play_time, strikes): board.update_model() find = find_empty(board.model) if not find: return True else: row, col = find for i in range(1, 10): if valid(board.model, i, (row, col)): board.cubes[row][col].set(i) board.update_model() redraw_window(win, board, play_time, strikes) pygame.display.update() if display_solution(win, board, play_time, strikes): return True board.cubes[row][col].set(0) board.update_model() redraw_window(win, board, play_time, strikes) pygame.display.update() return False
def test_verify(self): """Verify some validation and sample board properties.""" board = PUZZLES[2] assert solver.valid(board) is True assert solver.complete(board) is False assert len(board) == 9