C# ile kombinasyon hesaplama

Title : How to calculate a combination with C#?

Şu aralar MasterMind adlı bir oyunla uğraşıyorum. Oyunu bilgisayara karşı da oynayabilmenizi sağlayacak bir yapı üzerinde çalışıyorum. Bu yapının temelinde de olasılık, kombinasyon ve permütasyon hesaplamaları var. Aşağıdaki kod belirlenen basamak sayısına göre sayıların kombinasyonlarını hesaplar.

/// <summary>
/// Kombinasyon hesaplamasını yapar
/// </summary>
/// <param name="current">Şu anki işlenen veri</param>
/// <param name="digitcount">Toplam basamak sayısı</param>
/// <param name="combination">Kombinasyon sayısı (4'ün 2'li kombinasyonu için 2)</param>
/// <param name="index">İşlenen veri indexi</param>
private void GetCombinations(string current, int digitcount, int combination, int index)
{
    for (int i = index + 1; i < digitcount; i++)
    {
        string newcurrent = current + i.ToString();
        GetCombinations(newcurrent, digitcount, combination, i);
    }
 
    if (current.Length == combination)
        Console.WriteLine(current);
}

Sonuçları Console’a yazdırıyor method. Bu metoda çok fazla yoğunlaşamadım ama isterseniz siz bir sınıf oluşturup bu metodu bu sınıf içerisinde gerçekleyebilirsiniz. Combination adlı bir sınıf oluşturup, 4 basamaklı sayıların 2’li kombinasyonlarını hesaplamak için Combination.Calculate(4,2) gibi bir metotla işleminizi yapabilirsiniz (Böyle bir sınıf için lütfen bu http://www.ahmetbutun.net/gX bağlantıyı takip ediniz ). Ama şu anki haliyle, 5 basamaklı sayıların 2’li kombinasyonları için,

1. yol

  for (int i = 0; i < total; i++)
       GetCombinations(i.ToString(), 5,2, i);

2. yol

GetCombinations("", 5, 2, -1);

şeklinde metodu çağırabilirsiniz.

, , ,

No comments yet.

Bir Cevap Yazın

Font Resize