C# ile permütasyon hesaplama

Title : How to calculate a permutation with C#?

Bu yazımda C# ile nasıl kombinasyon hesabı yapılabileceğinden bahsetmiştim. C# ile permütasyon hesabı yapan benzer bir sınıfı da oluşturup sizinle paylaşmak istedim. Biliyorsunuz şu aralar C# ile MasterMind oyunu üzerinde çalışıyorum. Klasik oyundan farklı olarak bilgisayara karşı da oynanabilecek bir versiyon üzerinde çalışıyorum ve hem kombinasyon hem de permütasyon hesaplarına şiddetle ihtiyaç duyuyorum. Bütün bu yazılar da bu ihtiyacın bir sonucu olarak ortaya çıktı zaten. Yakında uygulamayı da buradan paylaşacağım sizinle…

C# ile permütasyon hesabı yapabileceğiniz sınıfımız da aşağıda.

    public class Permutation
    {
        List innerArray_ = new List();
 
        public Permutation()
        {
            this.DigitCount = 0;
            this.Permutations = 0;
            this.UseRepeatation = false;
        }
 
        public bool UseRepeatation { get; set; }
 
        public int DigitCount { get; set; }
 
        public int Permutations { get; set; }
 
        public List GetPermutations()
        {
            if (this.DigitCount > 0 && this.Permutations > 0)
                GetPermutations("");
 
            return this.innerArray_;
        }
 
        public List GetPermutations(int digitcount, int permutations)
        {
            this.DigitCount = digitcount;
            this.Permutations = permutations;
 
            return this.GetPermutations();
        }
 
        private void GetPermutations(string current)
        {
            if (current.Length < this.Permutations)
            {
                for (int i = 0; i < this.DigitCount; i++)
                {
                    if (current.IndexOf(i.ToString()) < 0 || this.UseRepeatation)
                        GetPermutations(current + i.ToString());
                }
            }
            else if (current.Length == this.Permutations)
                this.innerArray_.Add(current);
        }
    }

4 basamaklı bir sayının 2’li kombinasyonlarını (sayı tekrarı olmadan) bulmak için,

Permutation per = new Permutation();
 
List result = per.GetPermutations(4, 2);

4 basamaklı bir sayının 2’li kombinasyonlarını (sayı tekrarı ile) bulmak için,

Permutation per = new Permutation();
per.UseRepeatation = true;
 
List result = per.GetPermutations(4, 2);

Burada da aynen kombinasyon da olduğu gibi dikkat etmeniz gereken nokta, List olarak geri dönen değerler kombinasyonların index değerleri (sayının index değerleri demek daha doğru olur).

, ,

No comments yet.

Bir Cevap Yazın

Font Resize