Python ile Satranç tahtasına 8 Kaleyi, bir birini yemeyecek şekilde nasıl yerleştirirsiniz?
sorusuna cevap vermek için uğraşırken, aşağıdaki gibi bir kod yapısına ulaştım.
Bu esnada;
for item in liste döngüsü içinde ;
liste.remove(item) işlemi yaparken, her seferinde listedeki item sayısı değiştiği için kodun sağlıklı işlemediğini öğrendim.
Bunu çözmek için ya iki ayrı liste kullanmak
ya da for item in list(liste) yapısını tercih etmek gerekiyormuş.
Kod aşağıdaki gibi,
bir birini yemeyecek şekilde Random Kale yerleşimleri üretiyor.
# Birbirini Yemeyen Kaleler
# twitter.com/MuratTatar
from random import choice
harfler=["a","b","c","d","e","f","g","h"]
x=8
tahta=[]
ar=[]
for i in harfler:
for j in range(1,x+1):
ar = [i,j]
tahta.append(ar)
kaleler=[]
for k in range(1,x+1):
r = choice(tahta); kaleler.append(r)
print "random yerlesim:", r
bas=r[0]; son=r[1]
for t in list(tahta):
if t[0]==bas: print "yatay elenen kesisim karesi",t; tahta.remove(t)
if t[1]==son:
print "dikey elenen kesisim karesi",t
try: tahta.remove(t)
except: pass
print "\n\n Birbirini Yemeyen Kale yerlesimleri:\n", kaleler, "\n\n"