Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
3 beğenilme 0 beğenilmeme
513 kez görüntülendi

Beyaz ve siyah vezirleri 4x4’lük bir satranç tahtasına öyle yerleştireceksiniz ki; her sırada ve her kolondaki beyaz vezirlerin sayısı siyah vezirlerin sayısından büyük olsun.

Bu işlem kaç farklı biçimde yapılabilir?

Not:
-Her kareye sadece bir vezir (beyaz veya siyah) koyabilirsiniz ya da boş bırakabilirsiniz.

Soru 3x3’lük bir tahta için sorulsaydı cevap 451 olacaktı.

Serbest kategorisinde (496 puan) tarafından 
tarafından yeniden gösterildi | 513 kez görüntülendi

Gerçekten de güzel soru...

1 cevap

0 beğenilme 0 beğenilmeme

image

İstenen şartın sağlanıp sağlanmadığını kontrol eden bir fonksiyon olarak yazılmıştır. Renkler matris yapısında tutulmuştur. $0,1,2$ olmak üzere, renkler ve boşluk için değerler atanmak suretiyle yine Python'da yazılmış bir kod.

(496 puan) tarafından 

@kartal, bunlar resim galiba, yani bende oyle gozukuyor gibi. Yazili seklini koyabilir kopyla-yapistir-calistir imkanimiz da olur. 

Tabii koyabilirim, ancak göz zevkini bozuyor, bilmiyorum sitede kod destekli "indent" vs gibi konuları kapsayan görünüm sağlayan bir şey var mı?

import time

time1=time.time()

lis,count,tablesize=[],0,4

 

def ObeyRule():

    L=len(lis)-1

    color=[[0]*3 for i in range(tablesize)]

 

    #print(color)

 

    Row,Col=divmod(L,tablesize)

 

    #print("Row,Col,L=",Row,Col,L)

 

    if Col>1:

        #print("Row,Col,L=",Row,Col,L)

        for i in range(L+1):

            c,row=lis[i],i//tablesize

            #print("c,row=",c,row)

            color[row][c]+=1

             

        #print("lis,color=",lis,color,L,Row,Col)

        for j in range(Row+1):

 

            if color[j][1]==2:

                return False

             

            if color[j][0]<=color[j][1]:

                #print("lis=",lis,"color=",color,"L=",L,"Row=",Row,"Col=",Col)

                return False

 

    color=[[0]*3 for i in range(tablesize)]

    if Row>1:

        #print("Row,Col,L=",Row,Col,L)

        for i in range(L+1):

            c,col=lis[i],i%tablesize

            #print("c,row=",c,row)

            color[col][c]+=1

             

        #print("lis,color=",lis,color)

        for j in range(Col+1):

            if color[j][0]<=color[j][1]:

                return False

 

 

 

    return True


def Solve():

    global count

    for i in range(3):

        lis.append(i)

 

         

        if ObeyRule():

            if len(lis)<9:

                Solve()

            else:

                #print(lis)

                count+=1

 

        lis.pop()

 

Solve()

print(count)

print(time.time()-time1)


Yukarıdaki jpeg dosyasındaki "tablesize" 3 idi, burada görüldüğü üzere 4'tür. Soruda da sorulan oydu, kod çalıştırılırken tablesize=3 yapılarak, verilen örnek için olması gereken yanıtın 451 sayısı olduğu görülür.  Yâni değerlerle oynamak için, kodun çalıştırılabilir olması mantıklı. 

Tesekkur ederim. Bi Anil'a yonlendireyim bu konuyu, o daha hakim eklenti konusuna.

Bu eklentıler ıçin pluing yüklenmeli ancak benim ana dataya erişimim yok, bu tür yüklemeler zamanında sitenin ana ayarlarını bozabilecek buglar oluşturdugundan kimse pluing uplayıp silemiyor dolayısıyla bir müddet böyle takılmak zorundayız :(

20,200 soru
21,728 cevap
73,277 yorum
1,888,006 kullanıcı