Takip et

En Basit Sekiz Kraliçe Kodu

En Basit Sekiz Kraliçe Kodu

Sekiz Kraliçe problemi, klasik bir bilgisayar bilimleri problemidir. Bu problemde, 8×8’lik bir satranç tahtasına sekiz kraliçe yerleştirmeniz ve hiçbirinin birbirini tehdit etmemesini sağlamanız gerekiyor. Başka bir deyişle, hiçbir kraliçenin aynı satırda, aynı sütunda veya aynı diyagonalde olmaması gerekiyor. Bu makalede, bu problemi çözmek için muhtemelen online bulabileceğiniz en basit kodu adım adım inceleyeceğiz. Ayrıca, kodu daha iyi anlamanıza yardımcı olacak açıklamalar ve optimizasyon önerileri de sunacağım.

Problem Anlayışı ve Çözüm Yöntemi

Bu problemi çözmek için kullanacağımız temel yöntem, geri izleme (backtracking) algoritmasıdır. Geri izleme, bir çözüm bulana kadar tüm olası yolları denemeyi ve yanlış bir seçim yapıldığında önceki adıma geri dönmeyi içerir. Örneğin, bir kraliçeyi belirli bir kareye yerleştirdikten sonra, diğer kraliçelerin yerleştirilebileceği alanları kontrol ederiz. Eğer bir kraliçe yerleştirilemiyorsa, önceki kraliçenin konumunu değiştirip tekrar denemek zorunda kalırız. Bu yöntem, tüm olasılıkları sistematik bir şekilde tarayarak doğru çözümü bulmamızı sağlar.

Python ile Basit Bir Geri İzleme Uygulaması

İşte, Python kullanarak sekiz kraliçe problemini çözen basit bir geri izleme algoritması:


def sekiz_kraliçe(tahtalar, satir):
    if satir == 8:
        return tahtalar

    for sutun in range(8):
        guvenli_mi = True
        for i in range(satir):
            if tahtalar[i] == sutun or abs(tahtalar[i] - sutun) == satir - i:
                guvenli_mi = False
                break

        if guvenli_mi:
            tahtalar[satir] = sutun
            sonuc = sekiz_kraliçe(tahtalar, satir + 1)
            if sonuc:
                return sonuc
    return None

tahtalar = [0] * 8
cozum = sekiz_kraliçe(tahtalar, 0)

if cozum:
    print("Çözüm:")
    for i in range(8):
        print(cozum)
else:
    print("Çözüm bulunamadı.")

Bu kod, her satırı teker teker işleyerek, her bir satır için güvenli bir sütun arar. “guvenli_mi” değişkeni, yerleştirilen kraliçenin diğer kraliçeler tarafından tehdit edilip edilmediğini kontrol eder. Eğer güvenli bir konum bulunursa, kraliçe yerleştirilir ve fonksiyon bir sonraki satıra geçer. Eğer güvenli bir konum bulunmazsa, fonksiyon önceki satıra geri döner ve farklı bir sütun dener.

Kodun Açıklaması ve Optimizasyonlar

Kod, oldukça basit ve anlaşılırdır. Bununla birlikte, daha da optimize edilebilir. Örneğin, bazı gereksiz kontrol işlemleri kaldırılabilir veya daha verimli veri yapıları kullanılabilir. Ayrıca, bu kod sadece bir çözüm bulur. Tüm olası çözümleri bulmak için kodun biraz değiştirilmesi gerekir. Bu durum, problemin karmaşıklığını gösterir ve farklı algoritma yaklaşımlarının faydalarını ortaya koyar.

Daha fazla bilgi ve örnekler için buraya bakabilirsiniz. Ayrıca, algoritmalar ve veri yapıları konusunda daha fazla bilgi edinmek için kendi web sitemi Fatih Soysal‘ı ziyaret edebilirsiniz.

Umarım bu makale size sekiz kraliçe problemini ve çözüm yöntemlerini daha iyi anlamanıza yardımcı olmuştur. Sorularınız veya yorumlarınız varsa, lütfen benimle iletişime geçmekten çekinmeyin.

#Etiketler: Sekiz Kraliçe, Sekiz Kraliçe Problemi, Satranç, Algoritma, Geri İzleme, Backtracking, Programlama, Python, Kodlama, En Basit Çözüm

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.