• Python Sudoku(Random list) Algoritması

    Merhaba random olarak 1-9 arasında liste oluşturmak istersek : import random ## random kütüphanesini ekledim a=[1,2,3,4,5,6,7,8,9] ##1-9 arası numaraların olduğu bir liste oluşturdum c1=[0,0,0,0,0,0,0,0,0]## 3 tane 9 elemanlı boş liste oluşturdum c2=[0,0,0,0,0,0,0,0,0] c3=[0,0,0,0,0,0,0,0,0] b=0##random için kullanacağımız integer sayı ##c1 listesi için rastgele sayılar for num in range (1,10): b=random.randint(1,10-num) c1[num-1]=a[b-1] a.pop(b-1) a=[1,2,3,4,5,6,7,8,9] print(c1) şimdi bir…

Python Sudoku(Random list) Algoritması

Merhaba random olarak 1-9 arasında liste oluşturmak istersek :

import random
## random kütüphanesini ekledim
a=[1,2,3,4,5,6,7,8,9] ##1-9 arası numaraların olduğu bir liste oluşturdum
c1=[0,0,0,0,0,0,0,0,0]## 3 tane 9 elemanlı boş liste oluşturdum
c2=[0,0,0,0,0,0,0,0,0]
c3=[0,0,0,0,0,0,0,0,0]
b=0##random için kullanacağımız integer sayı


##c1 listesi için rastgele sayılar 
for num in range (1,10):
    b=random.randint(1,10-num)
    
    c1[num-1]=a[b-1]
    a.pop(b-1)
a=[1,2,3,4,5,6,7,8,9]
print(c1)

şimdi bir fonksiyon oluşturup kesişen yerlerde fonksiyonu tekrarlattıralım.

random oluşturma işlemini geçiçi liste olan ‘a’daki değerlerden alıp o değerleri yok ettiğimiz için liste yatay olarak herhangi bir sayının tekrarını yapmayacaktır ancak dikey olarak tekrarlama yapabilir bunun için fonksiyonumuz şu şekilde olacak:

def ciz2(k):
    global a,b,c1,c2,c3,c4,c5,c6,c7,c8,c9
    for num in range (1,10):
        b=random.randint(1,10-num)## random değeri belirle
    
        k[num-1]=a[b-1]##değeri ata
        a.pop(b-1)##listedeki değeri yok et
    a=[1,2,3,4,5,6,7,8,9]##geçiçi listemiz olan 'a'yı tekrar eski haline getiriyoruz.
    ##kesişen bölgeleri belirliyoruz. alt alta aynı değerde olmaması lazım
    ##listeler yatay olarak tekrarlanmıyor çünkü listeyi başka listenin elemanlarından seçtik
    
    if c2[0]==c1[0] or c2[1]==c1[1] or c2[2]==c1[2] or c2[3]==c1[3] or c2[4]==c1[4] or c2[5]==c1[5] or c2[6]==c1[6] or c2[7]==c1[7] or c2[8]==c1[8] :  
        ciz2(c2)
    b=0

ciz2(c2)
print(c2)

def ciz3(k):
    global a,b,c1,c2,c3,c4,c5,c6,c7,c8,c9
    for num in range (1,10):
        b=random.randint(1,10-num)
    
        k[num-1]=a[b-1]
        a.pop(b-1)
    a=[1,2,3,4,5,6,7,8,9]
    if k[0]==c1[0] or k[1]==c1[1] or k[2]==c1[2] or k[3]==c1[3] or k[4]==c1[4] or k[5]==c1[5] or k[6]==c1[6] or k[7]==c1[7] or k[8]==c1[8]or k[0]==c2[0] or k[1]==c2[1] or k[2]==c2[2] or k[3]==c2[3] or k[4]==c2[4] or k[5]==c2[5] or k[6]==c2[6] or k[7]==c2[7] or k[8]==c2[8] :  
        ciz3(k)

    b=0
    
ciz3(c3)
print(c3)

yorumları beklerim 🙂


Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir