首页 源码 正文

源码窝解密(php源码在线解密工具)

2024-06-09 09:06:17 42 0
admin

使用文本编辑器或excel录入待解数独题到sudodata.csv文件源码窝解密,保存源码窝解密,再执行.py程序即显示破解结果。(程序和.csv文件要放同一目录)

源码窝解密

最难数独之一

源码窝解密

最难数独之二

python源码如下:

import time

t0=time.time()

class point:

def __init__(self,x,y):

self.x=x

self.y=y

self.available=[]

self.value=0

def rowNum(p,sudoku):

row=set(sudoku[p.y*9:(p.y+1)*9])

row.remove(0)

return row #set type

def colNum(p,sudoku):

col=[]

length=len(sudoku)

for i in range(p.x,length,9):

col.append(sudoku[i])

col=set(col)

col.remove(0)

return col #set type

def blockNum(p,sudoku):

block_x=p.x//3

block_y=p.y//3

block=[]

start=block_y*3*9+block_x*3

for i in range(start,start+3):

block.append(sudoku[i])

for i in range(start+9,start+9+3):

block.append(sudoku[i])

for i in range(start+9+9,start+9+9+3):

block.append(sudoku[i])

block=set(block)

block.remove(0)

return block #set type

def initPoint(sudoku):

pointList=[]

length=len(sudoku)

for i in range(length):

if sudoku[i]==0:

p=point(i%9,i//9)

for j in range(1,10):

if j not in rowNum(p,sudoku) and j not in colNum(p,sudoku) and j not in blockNum(p,sudoku):

p.available.append(j)

pointList.append(p)

return pointList

def tryInsert(p,sudoku):

availNum=p.available

for v in availNum:

p.value=v

if check(p,sudoku):

sudoku[p.y*9+p.x]=p.value

if len(pointList)<=0:

t1=time.time()

useTime=t1-t0

showSudoku(sudoku)

print('\nuse Time: %f s'%(useTime))

exit()

p2=pointList.pop()

tryInsert(p2,sudoku)

sudoku[p2.y*9+p2.x]=0

sudoku[p.y*9+p.x]=0

p2.value=0

pointList.append(p2)

else:

pass

def check(p,sudoku):

if p.value==0:

print('not assign value to point p!!')

return False

if p.value not in rowNum(p,sudoku) and p.value not in colNum(p,sudoku) and p.value not in blockNum(p,sudoku):

return True

else:

return False

def showSudoku(sudoku):

for j in range(9):

for i in range(9):

print('%d '%(sudoku[j*9+i]),end='')

print('')

#从数据文件sudodata.csv中读取数据

with open('sudodata.csv') as f:

lines = f.read().replace('\n','')

ls = lines.split(',')

sudoku = [int(x) for x in ls]

if __name__=='__main__':

# sudoku=[

# 8,0,0,0,0,0,0,0,0,

# 0,0,3,6,0,0,0,0,0,

# 0,7,0,0,9,0,2,0,0,

# 0,5,0,0,0,7,0,0,0,

# 0,0,0,0,4,5,7,0,0,

# 0,0,0,1,0,0,0,3,0,

# 0,0,1,0,0,0,0,6,8,

# 0,0,8,5,0,0,0,1,0,

# 0,9,0,0,0,0,4,0,0,

# ]

pointList=initPoint(sudoku)

showSudoku(sudoku)

print('Answer:'.center(25,'-'))

p=pointList.pop()

tryInsert(p,sudoku)

程序源码改编自网络,有需要.csv数据文件和.py源码源码窝解密的,可留言。

收藏
分享
海报
0 条评论
42

本站已关闭游客评论,请登录或者注册后再评论吧~