public void CombinatoricsHelper_Factorial_Test() { Assert.AreEqual(CombinatoricsHelper.Factorial(0), 1); Assert.AreEqual(CombinatoricsHelper.Factorial(1), 1); Assert.AreEqual(CombinatoricsHelper.Factorial(2), 2); Assert.AreEqual(CombinatoricsHelper.Factorial(3), 6); Assert.AreEqual(CombinatoricsHelper.Factorial(4), 24); Assert.AreEqual(CombinatoricsHelper.Factorial(5), 120); for (int i = 1; i < 21; i++) { Assert.AreEqual(CombinatoricsHelper.Factorial(i), i * CombinatoricsHelper.Factorial(i - 1)); } }
// Construction static InputProvider() { _evenIntegers = CombinatoricsHelper.GenerateNTuples(Numbers, EvenExhaustiveCollectionSize); _oddIntegers = CombinatoricsHelper.GenerateNTuples(Numbers, OddExhaustiveCollectionSize); _randomIntegers = new int[10000000]; Random randGen = new Random(); for (int i = 0; i < _randomIntegers.Count; i++) { _randomIntegers[i] = randGen.Next(); } }
public void CombinatoricsHelper_GeneratePermutation_Test() { var elements = new List <int>(); for (int noOfElements = 0; noOfElements < 5; noOfElements++) { elements.Add(noOfElements); for (int choose = 0; choose < noOfElements; choose++) { var results = CombinatoricsHelper.GeneratePermutations(elements); Assert.AreEqual(results.Count, CombinatoricsHelper.Factorial(elements.Count)); } } }
public void CombinatoricsHelper_GenerateNTuples_Test() { var elements = new List <int>(); for (int noOfElements = 0; noOfElements < 5; noOfElements++) { elements.Add(noOfElements); for (int choose = 0; choose < 5; choose++) { var results = CombinatoricsHelper.GenerateNTuples(elements, choose); Assert.AreEqual(results.Count, Math.Pow(elements.Count, choose)); } } }
public Solution SolveBrute(char[,] board) { var changes = board.ToPoints().Where(p => board.Get(p) != 'o') .Select(p => (board.Get(p) == '.' ? ".+xo" : board.Get(p) == 'o' ? "o" : (board.Get(p) + "o")).Select(c => new { c, p }).ToArray()) .ToArray(); var bestScore = 0; var bestBoards = new List <char[, ]>(); foreach (var comb in CombinatoricsHelper.Selections(changes)) { var resultBoard = board.ShallowClone(); foreach (var change in comb) { resultBoard.Set(change.p, change.c); } if (!IsBoardOk(resultBoard)) { continue; } var score = Score(resultBoard); if (score > bestScore) { bestScore = score; bestBoards.Clear(); bestBoards.Add(resultBoard); } else if (score == bestScore) { bestBoards.Add(resultBoard); } } return(new Solution { Score = bestScore, Board = bestBoards.Count == 0 ? null : bestBoards[0] }); }
public void SortHelper_QuickSort_Strings_Test() { // Define the alphabet: string[] alphabet = new string[26]; for (int i = 0; i < alphabet.Length; i++) { alphabet[i] = ('a' + i).ToString(); } // Get every permutation consisting of 3 letters: var permutations = CombinatoricsHelper.GenerateNTuples(alphabet, 4); foreach (var permutation in permutations) { // Sort each permutation: SortHelper.QuickSort(permutation); // Evaluate whether or not the sort was successful. for (int i = 1; i < permutation.Count; i++) { Assert.IsTrue(permutation[i].CompareTo(permutation[i - 1]) >= 0); } } }
public void GetAllPermutations_ThrowsOnNullArguments() { foreach (var list in CombinatoricsHelper.GetAllPermutations <object>(null)) { } }