Ö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:
  • 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