Satranç tahtası ve piyonlar

yazdığınız kod da ufak değişiklikler yaparak cevabı bulduğuma inanıyorum kontrol edermisiniz?

import itertools

olasılıklar = itertools.combinations(range(64), 3)


class Taş():
    __slots__ = ("x", "y")

    def __init__(self):
        self.x, self.y = 0, 0

    def __repr__(self):
        return f"Taş({self.x}, {self.y})"


t1, t2, t3 = (Taş() for i in range(3))

sonuç = []

for olasılık in olasılıklar:
    t1.y, t1.x = divmod(olasılık[0], 8)
    t2.y, t2.x = divmod(olasılık[1], 8)
    t3.y, t3.x = divmod(olasılık[2], 8)
    if t1.x==t2.x and abs(t1.y-t2.y)==1:
        continue
    if t1.x==t3.x and abs(t1.y-t3.y)==1:
        continue
    if t2.x==t3.x and abs(t2.y-t3.y)==1:
        continue
    if t1.y==t2.y and abs(t1.x-t2.x)==1:
        continue
    if t1.y==t3.y and abs(t1.x-t3.x)==1:
        continue
    if t2.y==t3.y and abs(t2.x-t3.x)==1:
        continue

    if abs(t1.x-t2.x)==1 and abs(t1.y-t2.y)==1:
        continue
    if abs(t1.x-t3.x)==1 and abs(t1.y-t3.y)==1:
        continue
    if abs(t2.x - t3.x) == 1 and abs(t2.y - t3.y) == 1:
        continue


    sonuç.append(olasılık)
print(len(sonuç))

Evet, benle aynı sonucu bulmuşsunuz. Herhalde doğrudur. Ben de bu kodu yazmıştım:

import itertools
    
olasılıklar = itertools.combinations(range(64), 3)

class Taş():
    __slots__ = ("x", "y")

    def __init__(self):
        self.x, self.y = 0,0

    def __repr__(self):
        return f"Taş({self.x}, {self.y})"


t1, t2, t3 = (Taş() for i in range(3))

sonuç = []

for olasılık in olasılıklar:
    t1.y , t1.x = divmod(olasılık[0], 8)
    t2.y , t2.x = divmod(olasılık[1], 8)
    t3.y , t3.x = divmod(olasılık[2], 8)

    if (abs(t1.y - t2.y) <= 1 and abs(t1.x - t2.x) <= 1) or (abs(t1.y - t3.y) <= 1 and abs(t1.x - t3.x) <= 1) or (abs(t3.y - t2.y) <= 1 and abs(t3.x - t2.x) <= 1):
        continue

    sonuç.append(olasılık)

teşekkürler çok yardımcı oldunuz