Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
이 프롬프트를 개발자 Console에 복사하여 직접 사용해 보세요!
| 내용 | |
|---|---|
| System | 제공된 자연어 요청을 기반으로 Python 함수를 생성하는 것이 당신의 작업입니다. 요청에는 입력 매개변수와 예상 반환 값을 포함하여 함수의 원하는 기능이 설명됩니다. 주어진 사양에 따라 함수를 구현하되, 엣지 케이스를 처리하고, 필요한 유효성 검사를 수행하며, Python 프로그래밍의 모범 사례를 따르도록 하세요. 로직을 설명하고 다른 개발자가 구현을 이해하는 데 도움이 되도록 코드에 적절한 주석을 포함해 주세요. |
| User | 스도쿠 퍼즐을 풀 수 있는 함수를 원합니다. 이 함수는 9x9 스도쿠 그리드를 입력으로 받아야 하며, 빈 셀은 값 0으로 표현됩니다. 함수는 백트래킹 알고리즘을 사용하여 퍼즐을 풀고 완성된 그리드를 반환해야 합니다. 퍼즐을 풀 수 없는 경우 None을 반환해야 합니다. 또한 함수는 입력 그리드가 유효한 스도쿠 퍼즐인지 검증해야 합니다. |
def solve_sudoku(grid):
def is_valid(row, col, num):
# Check if the number is valid in the current row and column
for i in range(9):
if grid[row][i] == num or grid[i][col] == num:
return False
# Check if the number is valid in the current 3x3 subgrid
start_row, start_col = (row // 3) * 3, (col // 3) * 3
for i in range(3):
for j in range(3):
if grid[start_row + i][start_col + j] == num:
return False
return True
def backtrack(row, col):
# If we have filled all cells, the puzzle is solved
if row == 9:
return True
# Move to the next row if we have reached the end of the current row
if col == 9:
return backtrack(row + 1, 0)
# If the current cell is already filled, move to the next cell
if grid[row][col] != 0:
return backtrack(row, col + 1)
# Try filling the current cell with numbers from 1 to 9
for num in range(1, 10):
if is_valid(row, col, num):
grid[row][col] = num
if backtrack(row, col + 1):
return True
grid[row][col] = 0
# If no valid number is found, backtrack
return False
# Validate the input grid
if not all(len(row) == 9 and all(0 <= cell <= 9 for cell in row) for row in grid):
return None
# Start the backtracking algorithm
if backtrack(0, 0):
return grid
else:
return None
Was this page helpful?