- Her satırda tüm rakamlar bulunmalı ve bu rakamlar sadece birer defa yer almalıdır.
- Her sütunda tüm rakamlar bulunmalı ve bu rakamlar sadece birer defa yer almalıdır.
- Her 9 bölgede tüm rakamlar bulunmalı ve bu rakamlar sadece birer defa yer almalıdır.
Sanırım kurallar tamam şimdi programa geçelim
Kod:
import time
SudokuNormal = [[6,8,0,0,0,0,3,4,0],
[0,5,0,0,0,0,0,9,0],
[0,0,0,4,2,0,0,0,8],
[0,7,9,0,0,0,0,8,0],
[0,3,0,0,0,0,2,0,0],
[0,6,2,5,9,8,0,0,0],
[0,9,1,2,0,6,4,0,0],
[0,4,5,8,0,0,0,0,0],
[7,0,0,0,0,9,0,5,0]]
count = 0
def find_empty(Sudo):
for x in range(9):
for y in range(9):
if Sudo[x][y] == 0:
return x,y
return None,None
def control(Sudo,x,y,Number):
for i in range(9):
if Sudo[x][i] == Number:
return False
for j in range(9):
if Sudo[j][y] == Number:
return False
box_X = x // 3
box_Y = y // 3
for m in range(box_X * 3, box_X * 3 + 3):
for n in range(box_Y * 3, box_Y * 3 + 3):
if Sudo[m][n] == Number:
return False
return True
def solve(Sudo):
global count
count += 1
x,y = find_empty(Sudo)
if x == None:
return True
else:
for i in range(1,10):
if control(Sudo,x,y,i):
Sudo[x][y] = i
# print(Sudo)
if solve(Sudo):
return Sudo
Sudo[x][y] = 0
return False
t1 = time.time()
print(f"Normal Sudoku = {SudokuNormal}"
f"Solution Normal S. = {solve(SudokuNormal)}")
t2 = time.time() - t1
NormalCount = count
count = 0 # reset count
Program x ve y koordinatı üzerinden teker teker olabilecek tüm rakamları deniyor ve doğru olanları yerleştiriyor.Bugünlük bu kadardı.Eğer bir hatam olduysa affola.Herkese iyi forumlar dilerim:))
Öncelikle teşekkürler hemen düzeltiyorum kullanımı anlatmamışım :( kullanım olarak programın en başındaki tablo benzeri parantezlerin ve sayıların olduğu yere x ve y koordinatı şeklinde çözülmemiş sudokuyu giriyoruz sudokuda boşlukları temsilen 0 rakamını giriyoruz:bilgili