Öncelikle herkese selamlar.Pcye geçenlerde format atayım dedim atmadan önce pcyi karıştırırken böyle bir python projesi buldum ve sizlerle paylaşmak istedim.Ama bilmeyenler için ilk önce isterseniz sudokunun kurallarını anlatalım.Sudoku 9 satır, 9 sütun ve 9 bölgeden oluşmaktadır.Sudokuda 81 rakam içinde bazı rakamlar yerleşik verilir verilmeyen kısımlarada 1den 9a kadar olan rakamlar rakamlar öyle yerleştirilmelidir ki sudokunun her satırında 1'den 9'a kadar olan rakamların hepsi bulunmalı ve 1'den 9'a olan rakamlar sadece birer defa yer almalıdır. Aynı kural, sütunlar ve bölgelerde de sağlanmalıdır.Sudokuda üç temel kural bulunmaktadı bunlar ise şunlardır:
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
- 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.
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
Öncelikle teşekkürler hemen düzeltiyorum kullanımı anlatmamışım
Son düzenleme:



