def createFullPuzzle(board): for i in range(0, 9): for j in range(0, 9): tmp = ['1','2','3','4','5','6','7','8','9'] while True: board[i][j] = random.choice(tmp) if sudoku.validateCell(board, i, j): break else: tmp.remove(board[i][j]) if len(tmp) == 0: sudoku.print_board(board) return board sudoku.print_board(board) return board
def addElement(board): i = random.randrange(0, 9) j = random.randrange(0, 9) while board[i][j] != '0': i = random.randrange(0, 9) j = random.randrange(0, 9) while True: tmp = ['1','2','3','4','5','6','7','8','9'] board[i][j] = random.choice(tmp) if sudoku.validateCell(board, i, j): return board else: tmp.remove(board[i][j]) if len(tmp) == 0: return None
def createPartialPuzzle(difficulty, board): lb = LEVELS[difficulty][0] ub = LEVELS[difficulty][1] num = LOWERBOUNDS[difficulty] placedCtr = 0 while placedCtr <= ub: i = random.randrange(0, 9) j = random.randrange(0, 9) if board[i][j] == '0': tmp = ['1','2','3','4','5','6','7','8','9'] while True: board[i][j] = random.choice(tmp) if sudoku.validateCell(board, i, j): placedCtr += 1 if placedCtr >= lb and random.randrange(0, 10) < 4: return board break else: tmp.remove(board[i][j]) if len(tmp) == 0: return board