powerSet<T> function

Set<Set<T>> powerSet<T>(
  1. Set<T> input
)

Power Set Generation: returns all subsets of the input set.

Example: powerSet({1, 2}) => { {}, {1}, {2}, {1,2} }

Implementation

Set<Set<T>> powerSet<T>(Set<T> input) {
  final list = input.toList();
  final result = <Set<T>>[<T>{}];
  for (var element in list) {
    final newSubsets = <Set<T>>[];
    for (final subset in result) {
      newSubsets.add({...subset, element});
    }
    result.addAll(newSubsets);
  }
  // Ensure the empty set is the first element
  result.removeWhere((s) => s.isEmpty);
  result.insert(0, <T>{});
  return result.toSet();
}