Satranç Tahtası ve Tek Sayılar

5*5 lik satranç tahtasının her satır ve sütununda bulunan toplam taş sayısı tek sayı olmak koşuluyla kaç farklı satranç tahtası oluşturulabilir?
Örneğin (1.satır =3 tane 2.satır=5 tane ……4.sütun=3 tane 5.sütun=1 tane )

Taş sayısını biz belirliyoruz değil mi?

evet taş sayısını biz belirliyoruz ama mümkün her durumu düşünerek

Daha önce yazmış olduğunuz taş classı kullanılabilir mi bilemedim orda hep taş sayısı sabitti

O sınıf debug kolaylığı sağlayan (__repr__) ve iki elemanlı bir liste gibi davranarak sadece kodun okunaklılığını arttıran ([0] ve [1] yerine .x ve .y) bir sınıftı. Ama bu soruda da kullanılabilir, taş sınıfını örnekleyen kişi olarak taş sayısını biz belirlemiyor muyuz?

1taştan 25taşa kadar her durum incelenebilir ama biraz zahmetli gibi geldi bana( taş sayısı 5ten başlamak daha mantıklı) çünkü 5ten küçükken şart sağlanmaz

Siz nasıl bir yöntem incelemeyi planlıyorsunuz?

Ben daha ilkel bir yolla buldum aslında 25 elemanlı bir ve sıfırlardan oluşan listeyi product le tüm durumları belirledim sonra o listeyi 5 e böldüm Şartları uyguladım

Ama farklı çözümleri görmek ufkumu açıyor sizin bu yorumlarınız ve çözümleriniz bu yüzden benim için değerli :slight_smile:

Aynı yere varıyor. Taş sayısını arttırarak kombinasyon kullanmaktan pek farkı yok gibi geldi bana.

from itertools import product
a=product([0,1],repeat=25)
sayaç=0
for i in a:
    if sum(i[0:5])%2==1 and sum(i[5:10])%2==1 and sum(i[10:15])%2==1 and sum(i[15:20])%2==1 and sum(i[20:])%2==1:
        if (i[0]+i[5]+i[10]+i[15]+i[20])%2==1 and (i[1]+i[6]+i[11]+i[16]+i[21])%2==1 and (i[2]+i[7]+i[12]+i[17]+i[22])%2==1:
            if (i[3]+i[8]+i[13]+i[18]+i[23])%2==1 and (i[4]+i[9]+i[14]+i[19]+i[24])%2==1:
                sayaç+=1
print(sayaç)

Taş mantığıyla benzerlik gösteriyor ama ben taş classını kullanarak bulamadım işin kolayına kaçtım :slight_smile:

Orhan bey artık döngüleri kullanmanız lazım, kodun okunaklılığı ve modülerliliği artmış olur.

Gerek yok zaten, sizin algoritmanız da gayet güzel.

aslında bu cevabın geleceğini bildiğim için yapmayı denedim ama onu düşünmektense yazmak kolayıma geliyor
hata aldım birde

Döngü oluşturma özyinelemeden önce gelen bir konu, şuan buna daha çok önem vermelisiniz bence :slight_smile:

hatadan kastım şu hız yavaşladı birde sonuç yanlış hatam nerde acaba?

from itertools import product
a=product([0,1],repeat=25)
sayaç=0
for i in a:
    for j in range(5):
        if sum(i[5*j:5*(j+1)])%2==1 and (i[0+j]+i[5+j]+i[10+j]+i[15+j]+i[20+j])%2==1:
            sayaç+=1
print(sayaç)

Birde matematiksel çözümünü paylaşıyorum ki bence çok daha harika bir yöntem
Cevap 2 üssü16=65536. Öncelikle, 4x4’lük kare alana kaç farklı şekilde piyon yerleştirebilirsiniz? Toplam 16 kare var ve her karede bir piyon var veya yok, yani her kare için 2 ihtimal var. Dolayısıyla, toplamda 2üssü16=65536 farklı şekilde piyon yerleştirebiliriz. Şimdi, soru 5x5lik bir alan için sorulmuştu ve her satır ve sütunda “tek sayıda” piyon isteniyordu. Yapmamız gereken, son sütuna ve son satıra, ilgili satırın veya sütunun üzerinde tek sayıda piyon olacak şekilde karar vererek piyon yerleştirmek veya boş bırakmak. Son kare ise, dikkat ederseniz, hem son satırı hem de son sütunu tek sayıya birlikte getiriyor.

sorun galiba yukarda 10 durumun hepsini sağlayınca sayacın artıyor olması ama burada sadece 2 durum sağlanınca sayaç artıyor.

Evet, bana da eksik yazmışsınız gibi geldi.