Algoritma Acil yardıma ihtiyacım var

Merhaba arkadaşlar.Acil yardıma ihtiyacım var.Bunun algoritmasının nasil kodlaya bilirim.Lütfen yardımcı olun

King ’ in ROOT’ a hücumunu ve ya aksini kontrol etmek için program yazmak lazımdır

  1. Root un koordinantlari taleb ediliyor
  2. King in koordinantları taleb edilyor
  3. Root Kingi tehdit ediyorsa print(ROOK) yazılacak,King Rootu tehdit ediyorsa print(KİNG) yazılacaktır
  4. Bunlardan hiç biri digerini tehdit etmiyorsa print(Nobody) yazılacaktdır

Programda fügurların bir-birini tehdit edə bileceyine diqqat edin.Bu durumda hem ROOK,hemde KİNG sözleri yazılmalıdır

Bkz Soru Sorarken Sıkça Düşülen Hatalar #12


King’in ROOT’a hücumunu ve ya aksini kontrol etmek ne demek? King ne? ROOT ne? Hücum ve koordinat ne?

3 Beğeni

Sayın @EkremDincel Türkçeden Türkçeye çevireyim.

Şimdi cam küreme bakıp bu kadar metinden müneccimlik yapıyorum:

Görüyorum, galiba satranç tahtası kodundan bahsediyor.

Evet görüyorum netleşmeye başladı. Şah ile Kaleden bahsediyor.

King ( ingilizcede büyük İ harfi yok KİNG herhalde King) yani şah ile Rook (kale) arasındaki tehdit ilişkisini istiyor…

Küreden bu kadar görebildim. Kafalarından geçeni anlayabildiğimizi düşünüyor soruyu soranlar.

King root diye android root apk sı linki koyasım geldi ama ya sabır deyip müsadenizle bir iki link önereceğim.

Sorularınız yerli yerlinde ama nafile, anlamazlar, kitabın ortasında cart diye sorup sonuç beklerler…

Kesin lazımdır.

Talep etse çözeriz de taleb edince bilemedim şimdi.

fügurların yerini bulamadım. Diqqat de edemiyorum.

Bu Türkçe yabancı uyruklu Türkçesi mi Azeri Türkçesi mi çözemedim.

How to Find the King’s Legal Moves in Chess With Python | by Martin Andersson Aaberge | Better Programming

python-chess

Yukarıdaki linkleri oku aybalam…

Özellikle ikinci linkteki pdf in,

Detects checks and attacks kısmını anlamaya çalış.

Ben de bu arada, diqqat ve figuru araştırayım.

5 Beğeni

@semtex hocam güldürdünüz beni Allah da sizi güldürsün. Bazı sorularda cidden böyle çeviriler gerekiyor.

3 Beğeni

Salam.Azerice yazıyorum.kusura bakmayın türkceye tam hakim diyilim

Bildim aybalam, da biz de bu senin Türkçe’yi bilmirek.

Şuna satranç tahtasında, kaleyle şah ın durumunu kontrol edecek bir kod arıyorum desen.

Bir iki satır da kodunu paylaşsan üzerinde konuşuruz.

Hiç olmayan kodun hepsini biz mi yazalım?

2 Beğeni

Şahın ve kalenin koordinat değerlerini row ve column olarak tutacak olursanız, hangisinin tehdit altında olduğunu kolaylıkla hesaplayabilirsiniz.

columns = ("8", "7", "6", "5", "4", "3", "2", "1")
rows = ("a", "b", "c", "d", "e", "f", "g", "h")

# Satranç tahtasını oluşturalım.
board = []

# koordinatları oluşturalım.
for number in columns:
    row = []
    for letter in rows:
        coordinate = letter + number
        row.append(coordinate)
    board.append(row)

# Tahtayı yazdıralım.
for row in board:
    print(row)

    
# Şimdi ise şahın ve kalenin koordinatlarını talep edelim.
# Ama bunun için bir fonksiyon oluşturalım.
def talep_et(message):
    _input = input(message)
    # Girilen koordinat geçerli mi diye kontrol edelim.
    if (_input[0] in rows) and (_input[1] in columns):
        # Geçerli ise girdiyi kullanışlı olacak şekilde return edelim.
        row = rows.index(_input[0])
        column = columns.index(_input[1])
        return {"row": row, "column": column}
    else:
        # Geçerli değil ise program hata versin.
        raise ValueError("Geçersiz Koordinat!")


king = talep_et("Şahın Koordinatı: ")
rook = talep_et("Kalenin Koordinatı: ")

# Son olarak, tehdit durumunun olup olmadığını kontrol edelim.
# Bunun için yeni bir fonksiyon oluşturalım.
def kontrol_et(king, rook):
    # tehdit değeri 0 ise "ROOK", 1 ise "KING", 2 ise "NOBODY" yazdıralım.
    threat = 2
    
    # Eğer kale ve şahın koordinat bilgisindeki harf aynı ise
    # veya her ikisinin de sayı değeri aynı ise şah için tehdit söz konusudur.
    if king["row"] == rook["row"]:
        threat = 0
    elif king["column"] == rook["column"]:
        threat = 0
        
    # Eğer şah ile kale arasındaki max uzaklık 1 birim ise kale için tehdit söz konusudur.
    distance = max((abs(king["row"] - rook["row"]), abs(king["column"] - rook["column"])))
    if distance == 1:
        threat = 1

    output = ("ROOK", "KING", "NOBODY")
    
    print(output[threat])

kontrol_et(king, rook)
    
1 Beğeni

diqqat et demiş etmemişsin?

c8,c7 yazıyorum

image

King yazıyor…

Rook , King yazmıyor.

:slight_smile:

Sıra kimde? Sıra vermediği için her iki yönden kontrol yapıp, ikisi için karşılıklı tehdit olduğunda ayrıca uyaracak şekilde koda bir iki satır eklemelisin…

Eklerdim ama olabildiğince kod yazmamaya çalışırım, öğrenmek isteyen biraz çabalarsa öğrenir kodu hazır verirsem öğrenmez diye düşünüyorum.

Eline sağlık son koşul hariç gayet güzel kod olmuş.

1 Beğeni