nextPermutation method

List<int> nextPermutation(
  1. int n, [
  2. int? r
])

Implementation

List<int> nextPermutation(int n, [int? r]) {
  if (r == null || r < 0 || r > n) {
    r = n;
  }

  final numbers = List.generate(n, (index) => index);
  int numbersCount = n;
  return List.generate(r, (index) {
    final index = nextInt(numbersCount);
    final number = numbers[index];
    numbers[index] = numbers[--numbersCount];
    return number;
  });
}