combinations method
Returns a list of all combinations of size n
Implementation
List<List<T>> combinations(int n) {
if (n > length || n <= 0) return [];
if (n == 1) return map((e) => [e]).toList();
final List<List<T>> result = [];
for (var i = 0; i <= length - n; i++) {
final remaining = sublist(i + 1).combinations(n - 1);
for (var combo in remaining) {
result.add([this[i], ...combo]);
}
}
return result;
}