Wolfram Research

LehmerCodeFromPermutation

Contributed by: Ed Pegg Jr

Source Notebook

Create the Lehmer code corresponding to a given permutation

ResourceFunction["LehmerCodeFromPermutation"][perm]

The Lehmer code corresponding to Lehmer code perm is created.

Details and Options

The generating algorithm is as follows. For each number in the permutation, count how many subsequent values it exceeds.

Examples

Basic Examples

Generate the Lehmer code of a permutation:

In[1]:=
ResourceFunction[
 "LehmerCodeFromPermutation"][{1, 2, 9, 5, 4, 12, 7, 6, 3, 11, 10, 8}]
Out[1]=

Scope

Generate the Lehmer code for a particular permutation:

In[2]:=
ResourceFunction["LehmerCodeFromPermutation"][RandomSample[Range[60]]]
Out[2]=

Properties and Relations

Multiplying by factorials leads to the factorial number system representation or lexicographic index of the given permutation:

In[3]:=
Total[MapIndexed[#1 (#2[[1]] - 1)! &, Reverse[{0, 0, 6, 2, 1, 6, 2, 1, 0, 2, 1, 0}]]]
Out[3]=

The lexicographic index of a permutation works as expected:

In[4]:=
Table[Total[
  MapIndexed[#1 (#2[[1]] - 1)! &, Reverse[ResourceFunction["LehmerCodeFromPermutation"][
     Permutations[Range[4]][[n]]]]]], {n, 1, 24}]
Out[4]=

Resource History