Skip to content

Instantly share code, notes, and snippets.

@trknhr
Created February 24, 2020 01:13
Show Gist options
  • Save trknhr/d7563e3b2fee15313541f5858db4274b to your computer and use it in GitHub Desktop.
Save trknhr/d7563e3b2fee15313541f5858db4274b to your computer and use it in GitHub Desktop.
数独を解く
import math
def main(board):
helper(board, 0, 0)
return board
def helper(board, row, column):
if len(board[row]) == column:
column = 0
row += 1
if row == len(board):
return True
if board[row][column] != ".":
return helper(board, row, column + 1)
for value in range(1, 10):
if canPlace(board, row, column, str(value)):
board[row][column] = str(value)
if helper(board, row, column + 1):
return True
board[row][column] = "."
return False
def canPlace(board, row, column, value):
if board[row][column] != ".":
return False
for b in board:
if b[column] == value:
return False
for r in board[row]:
if r == value:
return False
particleRow = math.floor(row / 3) * 3
particleColumn = math.floor(column / 3) * 3
for r in range(particleRow, particleRow + 3):
for c in range(particleColumn, particleColumn + 3):
if board[r][c] == value:
return False
return True
print(main(
[
[".",".","5","7",".",".",".","9","."],
[".",".",".",".",".","1",".","8","."],
["3",".",".",".","8",".",".",".","6"],
[".","2",".","5",".",".",".",".","."],
[".","3",".",".","2",".",".",".","."],
["6","4",".",".",".",".",".","7","."],
["4","9",".",".",".",".",".",".","3"],
[".",".","8",".",".","9",".","5","."],
[".",".",".",".",".",".","1",".","."]
]
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment