/// <summary> /// Add new numbers to list and increment repeat count by 2. /// </summary> /// <param name="numbers"></param> private static void AddNewNum(List <int> numbers) { NumbersAndRepeats numbersAndRepeats = new NumbersAndRepeats(); numbersAndRepeats.Numbers = new List <int>(); foreach (var item in numbers) { numbersAndRepeats.Numbers.Add(item); } numbersAndRepeats.Repeat = 2; NumberList.Add(numbersAndRepeats); }
/// <summary> /// Detect if numbers is in list, if is then incremet repeats++. /// </summary> /// <param name="numbers"></param> /// <param name="numbersAndRepeats"></param> /// <param name="numFromList"></param> /// <param name="num2"></param> /// <param name="similarNumCounter"></param> /// <param name="notDuplicateCounter"></param> private static void AddRepeatTimess(List <int> numbers, NumbersAndRepeats numbersAndRepeats, int numFromList, int num2Count, ref int similarNumCounter) { foreach (var num in numbers) { if (num == numFromList) { similarNumCounter++; } if (similarNumCounter == num2Count) { IsMatch = true; numbersAndRepeats.Repeat++; } } }
/// <summary> /// Add new numbers if this number combination does not exist, or increment repeats++ if numbers combination already is in NumberList. /// </summary> /// <param name="numbers"></param> public static void AddNumbers(List <int> numbers) { // if no repeat in NumberList is found then in the last loop cicle number is added to NumberList int notDuplicateCounter = 0; NumbersAndRepeats numbersAndRepeats = new NumbersAndRepeats(); IsMatch = false; if (NumberList.Count == 0) { AddNewNum(numbers); } else { foreach (var item in NumberList.ToList()) { int similarNumCounter = 0; notDuplicateCounter++; var numbesExist = item.Numbers.All(numbers.Contains) && numbers.Count() == item.Numbers.Count(); if (numbesExist) { for (int num2 = 0; num2 < item.Numbers.Count; num2++) { if (numbers.Count() == item.Numbers.Count()) { AddRepeatTimess(numbers, item, item.Numbers[num2], item.Numbers.Count, ref similarNumCounter); } } } else if (notDuplicateCounter == NumberList.Count && IsMatch == false) { AddNewNum(numbers); } } } }