combinations method
- int? count
override
Implementation
@override
Iterable<OrphanHand> combinations([int? count]) sync* {
count ??= _cards.length;
if (count > _cards.length) return;
if (0 == count || _cards.isEmpty) {
yield OrphanHand();
return;
}
List<Card> cs = _cards.toList();
ojSort(cs);
if (cs.length == count) {
yield OrphanHand.fromIterable(cs);
return;
}
List<int> a = List<int>.generate(count, (i) => i + 1);
do {
var res = OrphanHand();
for (int i = 0; i < count; i += 1) {
res.push(cs[a[i] - 1]);
}
yield res;
} while (ojNextCombination(a, cs.length));
}