Bu yazımda C# ile kombinasyon hesaplamak için küçük bir kod parçası paylaşmıştım ve bu metodun bir sınıf içerisinde gerçekleştirilebileceğini söylemiştim. Bu metodu bir sınıf içerisinde kullandım ve sizinle paylaşmak istedim, çok fazla bekleyemedim
İşte C# ile kombinasyon hasabı yapabileceğimiz sınıfımız.
public class Combination { List<string> innerArray_ = new List<string>(); public Combination() { this.DigitCount = 0; this.Combinations = 0; } public int DigitCount { get; set; } public int Combinations { get; set; } public List<string> GetCombinations() { if (DigitCount > 0) { //for (int i = 0; i < this.DigitCount; i++) // GetCombinations(i.ToString(), i); GetCombinations("", -1); } return this.innerArray_; } public List<string> GetCombinations(int digitcount, int combinations) { this.DigitCount = digitcount; this.Combinations = combinations; return this.GetCombinations(); } /// <summary> /// Kombinasyon hesaplamasını yapar /// </summary> /// <param name="current">Şu anki işlenen veri</param> /// <param name="index">İşlenen veri indexi</param> private void GetCombinations(string current, int index) { string tmpcurrent = ""; for (int i = index + 1; i < this.DigitCount; i++) { tmpcurrent = current + i.ToString(); GetCombinations(tmpcurrent, i); } if (current.Length == this.Combinations) this.innerArray_.Add(current); } }
Şimdi bu sınıfımızı, 5 basamaklı bir sayının 2′li kombinasyonunu hesaplamak üzere şu şekilde kullanabilirsiniz.
Combination com = new Combination(); List<string> result = com.GetCombinations(5, 2);
Burada dikkat etmeniz gereken nokta, List