combinations method

List<List<T>> combinations(
  1. int n
)

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;
}