Yunus Emre
Software Engineer
Python Satranç Olasılık Örneği
Satranç tahtası üzerinde bir olasılık hesaplamak için ödev verilmişti. Bende farklı şekillerde yapılabilecek bu ödevi python dili ile yapmayı tercih ettim. Her ne kadar kısa bir kodlama olsa da mantığını oturtmam biraz süre aldı.
Python Olasılık Hesaplama
Amaç: Bir satranç tahtası üzerine satranç piyonlarını ilk piyon siyah olmayacak ve siyah iki piyon yan yana gelmeyecek şekilde dizilecektir. Bu dizilimin kaç farklı şekilde
olabileceği incelenecektir. Daha sonra bu dizilimler ekrana yazdırılacaktır. Örneğin satranç tahtasında 8 sütun yerine 4 sütun bulunsaydı;
Beyaz | Beyaz | Beyaz | Beyaz |
Beyaz | Siyah | Beyaz | Beyaz |
Beyaz | Beyaz | Siyah | Beyaz |
Beyaz | Beyaz | Beyaz | Siyah |
Beyaz | Siyah | Beyaz | Siyah |
İstenildiği gibi ilk piyonu beyaz olarak başlattık ve daha sonra siyah iki piyon asla yan yana gelmedi. Bu şekilde 5 ihtimal bulduk.
Python Satranç Olasılık Örneği
Yukarıdaki örnekte gösterildiği gibi 4 sütun olduğunda 5 ihtimale ulaştık. 8 sütun olsaydı ihtimal 34 olacaktı. Bunu python ile nasıl yapabiliriz?
def kontrol(sayi):
deger=0
sonuc=0
#1 beyaz ve 0 siyah
for rakam in str(sayi):
if deger==int(rakam)==0:
sonuc=0
break
else:
deger=int(rakam)
sonuc=1
return sonuc
sayac=0
for i in range(170,256):
sayi=bin(i)[2:]
sonuc=kontrol(sayi)
if sonuc==1:
sayac=sayac+1
sonsayi=str(sayi).replace("1","B")
print(sayac,"-->",sonsayi.replace("0","S"))
Not: Python dilinde girintiler önemli olduğu için kodu kullanırken buna dikkat etmelisiniz.
Mantık: Satranç oyununda sadece beyaz ve siyah olduğu için bu durum binary sistemine entegre edildi. Kriterlerimize uyan en küçük sayı değeri “10101010”, en büyük sayı değeri ise “1111111” sayısıydı. (Beyaz rengi 1, siyah rengi 0 yaptık. Sayı 1 ile başladı ve iki 0 asla yan yana gelmedi) Bu sayılar decimal’e çevrildiğinde 170 ve 255 sayıları bulundu. Bu nedenle for döngüsü ile bu sayılar üretildi. Üretilen sayılar binary sistemine çevrilerek kontrol fonksiyonuna gönderildi. Kontrol fonksiyonu kriterlerimize uyan sayılar için 1, uymayan sayılar için 0 dönüşünü gerçekleştirdi. Ardından 1 dönüşünü aldığımız sayılar içerisinde 1 rakamının B, 0 rakamının S olarak değiştirmesi için string değere çevrildi. Daha sonra replace komutu ile bu değişim yapıldı ve ekrana yazdırıldı.
Python satranç olasılık örneği bu şekilde tamamlandı. Kod aşaması kısa süren bir ödevdi ancak mantığını oturtmak biraz süre aldı.