/// <summary> /// Returns an array containing enumerated combinations. /// </summary> public static CardSet[] Combin(DeckDescriptor deckDescr, int count, CardSet sharedCards, CardSet deadCards) { CardSet unused = deadCards | sharedCards; int combCount = (int)EnumAlgos.CountCombin(deckDescr.Size - unused.CountCards(), count); CombinArrayParams p = new CombinArrayParams(); p.arr = new CardSet[combCount]; Combin(deckDescr, count, sharedCards, deadCards, OnCombinArray, p); return(p.arr); }
static void OnCombinArray(ref CardSet cards, CombinArrayParams p) { p.arr[p.count++] = cards; }