public void StressCn_Ctor2B() { // Use higher maxChoices values for a longer running test. #if STRESS const int maxChoices = 16; #else const int maxChoices = 5; #endif int counter = 0; for (int choices = 0; choices <= maxChoices; ++choices) { for (int picks = 0; picks <= choices; ++picks) { long maxRows = Combinatoric.BinomialCoefficient(choices, picks); for (int rank = 0; rank < maxRows; ++rank) { Combination row1 = new Combination(choices, picks, rank); int[] source = new int[picks]; row1.CopyTo(source); Combination row2 = new Combination(choices, source); // verify that rank(unrank(x)) = x Assert.AreEqual(rank, row1.Rank); Assert.AreEqual(rank, row2.Rank); ++counter; } } } }
public void Unit_BinomialCoefficient2() { ResetCombinatoric(); long bc5 = Combinatoric.BinomialCoefficient(80, 3); Assert.AreEqual(82160, bc5); }
public void Unit_BinomialCoefficient3() { var bcTable = BuildPascalsTriangle(); for (int n = 0; n < bcTable.Count; ++n) { for (int k = 0; k < bcTable[n].Length; ++k) { long bc = Combinatoric.BinomialCoefficient(n, k); Assert.AreEqual(bcTable[n][k], bc, "n=" + n + ", k=" + k); } } }
public void Unit_BinomialCoefficient1() { ResetCombinatoric(); long bc1 = Combinatoric.BinomialCoefficient(1, -1); Assert.AreEqual(0, bc1); long bc2 = Combinatoric.BinomialCoefficient(1, 2); Assert.AreEqual(0, bc2); long bc3 = Combinatoric.BinomialCoefficient(65, 4); Assert.AreEqual(677040, bc3); long bc4 = Combinatoric.BinomialCoefficient(66, 33); Assert.AreEqual(7219428434016265740, bc4); }
public void Unit_BinomialCoefficient4() { var bcTable = BuildPascalsTriangle(); int n = bcTable.Count; Assert.AreEqual(1, Combinatoric.BinomialCoefficient(n, 0)); for (int k = 1; k < n / 4; ++k) { long bc = Combinatoric.BinomialCoefficient(n, k); long expected = bcTable[n - 1][k - 1] + bcTable[n - 1][k]; long actual = Combinatoric.BinomialCoefficient(n, k); Assert.AreEqual(expected, actual, "k=" + k); } for (int k = (n * 3) / 4; k < n; ++k) { long bc = Combinatoric.BinomialCoefficient(n, k); long expected = bcTable[n - 1][k - 1] + bcTable[n - 1][k]; long actual = Combinatoric.BinomialCoefficient(n, k); Assert.AreEqual(expected, actual, "k=" + k); } }
public void Crash_BinomialCoefficient_Overflow() { long zz = Combinatoric.BinomialCoefficient(67, 34); }