1 Star 0 Fork 0

Yogurt_cry/local-excel_sudoku-decoder_20210402

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Test.py 2.65 KB
一键复制 编辑 原始数据 按行查看 历史
Yogurt_cry 提交于 2021-04-25 13:54 +08:00 . 2021-04-25 13:54 完成所有代码开发
import pandas as pd
import numpy as np
from time import sleep
from datetime import datetime
from multiprocessing import Manager
from multiprocessing import Process
class Soduku:
def NewData(self):
dataDf = pd.read_excel('SudokuData.xlsx', header = None)
for index in range(len(dataDf), 9):
dataDf = dataDf.append({0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0}, ignore_index = True)
for index in range(len(dataDf.columns), 9):
dataDf[index] = [0, 0, 0, 0, 0, 0, 0, 0, 0]
dataDf = dataDf.where(dataDf.notnull(), 0)
dataDf = dataDf.astype(np.int)
dataArray = np.array(dataDf)
# 创建备选数
backupList = [['123456789' for x in range(9)] for x in range(9)]
backupArray = np.array(backupList)
backupArray = np.where(dataArray == 0, backupArray, '')
return [dataArray, backupArray]
# 备选数组
def BackupNumebrArray(self, dataArray, backupArray):
# 计算已使用数字, 去除备选
# 行
for rowIndex in range(9):
rowItem = dataArray[rowIndex]
backupItem = backupArray[rowIndex]
usedItem = ''.join([str(x) for x in rowItem])
usedItem = usedItem.replace('0', '')
for colIndex in range(9):
for item in usedItem:
backupItem[colIndex] = backupItem[colIndex].replace(item, '')
# 列
for colIndex in range(9):
colItem = dataArray[:,colIndex]
backupItem = backupArray[:,colIndex]
usedItem = ''.join([str(x) for x in colItem])
usedItem = usedItem.replace('0', '')
for rowIndex in range(9):
for item in usedItem:
backupItem[rowIndex] = backupItem[rowIndex].replace(item, '')
# 九宫格
for rowIndex in range(0, 9, 3):
for colIndex in range(0, 9, 3):
regionItem = dataArray[rowIndex : rowIndex + 3, colIndex : colIndex + 3]
backupItem = backupArray[rowIndex : rowIndex + 3, colIndex : colIndex + 3]
usedItem = [*regionItem.flat]
usedItem = ''.join([str(x) for x in usedItem])
usedItem = usedItem.replace('0', '')
for x in range(3):
for y in range(3):
for item in usedItem:
backupItem[x, y] = backupItem[x, y].replace(item, '')
# backupArray = np.where(backupArray == '', dataArray, backupArray)
return backupArray
dataArray, backupArray = Soduku().NewData()
print(Soduku().BackupNumebrArray(dataArray, backupArray))
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Yogurt_cry/local-excel_sudoku-decoder_20210402.git
git@gitee.com:Yogurt_cry/local-excel_sudoku-decoder_20210402.git
Yogurt_cry
local-excel_sudoku-decoder_20210402
local-excel_sudoku-decoder_20210402
develop

搜索帮助