示例#1
0
 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));
     }
 }
示例#2
0
        // 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();
            }
        }
示例#3
0
        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));
                }
            }
        }
示例#4
0
        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));
                }
            }
        }
示例#5
0
文件: 7.cs 项目: qifanyyy/CLCDSA
        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]
            });
        }
示例#6
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);
                }
            }
        }
示例#7
0
 public void GetAllPermutations_ThrowsOnNullArguments()
 {
     foreach (var list in CombinatoricsHelper.GetAllPermutations <object>(null))
     {
     }
 }