private static void ParseRawInputToArrays() { Guess = new vvi(); foreach (string t in RawGuessInput) { Guess.Add(t.Select(x => x - '0').ToList()); } }
private static void GenerateSet_nk(int n, int k, vi comb, vvi set) { int size = comb.Count; if (size == k) { set.Add(size != 0 ? new vi(comb) : new vi()); return; } int last = size == 0 ? -1 : comb[size - 1]; for (int i = last + 1; i < size + n - k + 1; ++i) { comb.Add(i); GenerateSet_nk(n, k, comb, set); comb.RemoveAt(size); } }
private static CombinationSets GenerateAllSets() { int n = GuessAttempts.Guess[0].Count; // length of the number var ks = GuessAttempts.RemainCorrectGuesses.GroupBy(c => c) .Select(g => g.First()) .Where(c => c != 0) .ToList(); var dict = new CombinationSets(); foreach (var k in ks) { var set = new vvi(); GenerateSet_nk(n, k, new vi(), set); dict.Add(k, set); } return(dict); }