import random
def initialize_4x4():
row0=[1,2,3,4]
random.shuffle(row0)
row1=row0[2:4]+row0[0:2]
row2=[row0[1],row0[0],row0[3],row0[2]]
row3=row2[2:4]+row2[0:2]
return [row0,row1,row2,row3]
def hanghuanhang(board):
top=board[:2]
bottom=board[2:]
random.shuffle(top)
random.shuffle(bottom)
return top+bottom
def hengshuhuan(board):
size=len(board)
k=[]
for i in range(size):
k.append([])
for row in board:
for g in range(size):
k[g].append(row[g])
return k
def creation_4x4():
board=initialize_4x4()
board=hanghuanhang(board)
board=hengshuhuan(board)
board=hanghuanhang(board)
board=hengshuhuan(board)
return board
def copy_board(board):
j=[]
for row in board:
j.append(row[:])
return j
def get_messege(messege,a,b):
messeges=input(messege)
while not(messeges.isdigit() and a<=int(messeges)<=b):
messeges=input(messege)
return int(messeges)
def get_level():
print("输入你的数独等级")
level=input("一共1~3个等级 请输入你想进行的等级:")
while level not in("1","2","3"):
level=input("一共1~3个等级 请输入你想进行的等级")
if level=="1":
return 6
elif level=="2":
return 8
else:
return 10
def make_holes(copy_board,get_level):
while get_level >0:
i=random.randint(0,3)
j=random.randint(0,3)
if copy_board[i][j]!=0:
copy_board[i][j]=0
get_level-=1
return copy_board
def show_board(copy_board):
for row in copy_board:
for entry in row:
if entry==0:
print(".",end=" ")
else:
print(entry,end=" ")
print()
def soduk_mini():
solution=creation_4x4()
clone=copy_board(solution)
data=get_level()
data1=make_holes(clone,data)
show_board(data1)
while data>0:
i = get_messege("行数#", 1, 4) - 1
j = get_messege("列数#", 1, 4) - 1
if data1[i][j]!=0:
print("这里已经有数了重新输入")
continue
n=get_messege("数字#:",1,4)
if n ==solution[i][j]:
data1[i][j]=solution[i][j]
show_board(data1)
data-=1
else:
print("数字有误重新输入")
print("做的真好,再试一次吧!")
soduk_mini()
@Dick_不周 哥 能不能帮我查一下我哪里没弄对 我检查了2~3遍头都看晕了 还是没找出来!😭