Reversed Permutation Index Reversed Permutation Index
Simple
English

This mission is the inverse function of Permutation Index. (The mission idea is by przemyslaw.daniel.)

You are given the length of the permutation (an integer) and the permutation index (an integer starting from 1). The task is to calculate one of the permutations of the consecutive integers (starting from 0) and return it (an iterable of integers).

For example

  • Input: 3, 4
    • All consecutive permutations are:
      1. (0, 1, 2)
      2. (0, 2, 1)
      3. (1, 0, 2)
      4. (1, 2, 0) !!!
      5. (2, 0, 1)
      6. (2, 1, 0)
  • Output: (1, 2, 0)

Example:

assert tuple(reversed_permutation_index(3, 5)) == (2, 0, 1)
assert tuple(reversed_permutation_index(6, 271)) == (2, 1, 3, 0, 4, 5)

Input: The length of the permutation (an integer) and the permutation index (an integer).

Output: One of the permutations (an iterable of integers).

Precondition:

  • 1 ≤ length
  • 1 ≤ permutation_index ≤ math.factorial(length)