// ReSharper disable UnusedParameter.Local private static void _CheckResults <T>(CCombinations <T> combs, List <T> input) // ReSharper restore UnusedParameter.Local { List <List <T> > results = new List <List <T> >(); foreach (List <T> comb in combs) { foreach (List <T> other in results) { Assert.IsFalse(other.SequenceEqual(comb), "Result must be unique"); } for (int i = 0; i < comb.Count - 1; i++) { Assert.IsTrue(comb.IndexOf(comb[i], i + 1) < 0, "Repetition not allowed"); Assert.IsTrue(input.Contains(comb[i]), "Output must be in input sequence"); } results.Add(comb); } Assert.AreEqual(combs.Count(), results.Count); List <List <T> > results2 = combs.GetAll(); Assert.AreEqual(results.Count, results2.Count); for (int i = 0; i < results2.Count; i++) { Assert.IsTrue(results[i].SequenceEqual(results2[i])); } }
private static void _AddCombinations(int numPlayer, int playersPerRound, List <CRound> combinations) { List <int> input = new List <int>(numPlayer); for (int i = 0; i < numPlayer; i++) { input.Add(i); } CCombinations <int> combs = new CCombinations <int>(input, playersPerRound); combinations.AddRange(combs.Select(combination => new CRound(combination))); combinations.Shuffle(); }
public void TestResults([Range(0, 8, 1)] int n) { Random rand = new Random(); for (int k = 0; k <= n; k++) { List <int> collection = new List <int>(n); int r = rand.Next(1000); for (int i = 0; i < n; i++) { collection.Add(i + r); } CCombinations <int> combs = new CCombinations <int>(collection, k); Assert.AreEqual(CCombinations <int> .Count(n, k), combs.Count()); _CheckResults(combs, collection); } }
public async Task <IServiceMessage <IScore> > ScanOptions([FromUri] CScannerMessage data) { var errors = data.GetErrors(); if (errors.Any()) { return(new CServiceMessage <IScore> { Errors = errors }); } var combos = new CCombinations(data.Combo); if (Equals(data.Cache, 1)) { await combos.GetOptionsAsync(data); } return(await combos.GetCombinationsAsync(data)); }
public void TestCount() { Assert.AreEqual(4, CCombinations <int> .Count(4, 3)); Assert.AreEqual(6, CCombinations <int> .Count(4, 2)); Assert.AreEqual(66, CCombinations <int> .Count(12, 2)); // Corner cases for (int i = 1; i < 12; i++) { Assert.AreEqual(1, CCombinations <int> .Count(i, 0)); Assert.AreEqual(1, CCombinations <int> .Count(i, i)); Assert.AreEqual(0, CCombinations <int> .Count(i, i + 1)); } // Check identity (n k) = (n n-k) for (int i = 0; i <= 12; i++) { Assert.AreEqual(CCombinations <int> .Count(12, i), CCombinations <int> .Count(12, 12 - i)); } Assert.That(() => CCombinations <int> .Count(-1, -1), Throws.TypeOf <ArgumentException>()); Assert.That(() => CCombinations <int> .Count(-1, 1), Throws.TypeOf <ArgumentException>()); Assert.That(() => CCombinations <int> .Count(1, -1), Throws.TypeOf <ArgumentException>()); }
public void TestCounts() { Assert.AreEqual(4, CCombinations <int> .Count(4, 3)); Assert.AreEqual(6, CCombinations <int> .Count(4, 2)); Assert.AreEqual(66, CCombinations <int> .Count(12, 2)); // Corner cases for (int i = 1; i < 12; i++) { Assert.AreEqual(1, CCombinations <int> .Count(i, 0)); Assert.AreEqual(1, CCombinations <int> .Count(i, i)); Assert.AreEqual(0, CCombinations <int> .Count(i, i + 1)); } // Check identity (n k) = (n n-k) for (int i = 0; i <= 12; i++) { Assert.AreEqual(CCombinations <int> .Count(12, i), CCombinations <int> .Count(12, 12 - i)); } CTestHelpers.AssertFail <ArgumentException>(() => CCombinations <int> .Count(-1, -1)); CTestHelpers.AssertFail <ArgumentException>(() => CCombinations <int> .Count(-1, 1)); CTestHelpers.AssertFail <ArgumentException>(() => CCombinations <int> .Count(1, -1)); }