Permutation group operation There is a well-known bijection between the permutations of \$n\$ elements and the numbers \$0\$ to \$n!-1\$ such that the lexicographic ordering of the permutations and the corresponding numbers is the same. For example, with \$n=3\$:
0 &lt;-&gt; (0, 1, 2)
1 &lt;-&gt; (0, 2, 1)
2 &lt;-&gt; (1, 0, 2)
3 &lt;-&gt; (1, 2, 0)
4 &lt;-&gt; (2, 0, 1)
5 &lt;-&gt; (2, 1, 0)

It is also well-known that the permutations of \$n\$ elements form a group (the symmetric group of order \$n!\$) - so, in particular, that one permutation of \$n\$ elements applied to a second permutation of \$n\$ elements yields a permutation of \$n\$ elements.
For example, \$(1, 0, 2)\$ applied to \$(a, b, c)\$ yields \$(b, a, c)\$, so \$(1, 0, 2)\$ applied to \$(2, 1, 0)\$ yields \$(1, 2, 0)\$.
Write a program which takes three integer arguments: \$n\$, \$p_1\$, and \$p_2\$; interprets \$p_1\$ and \$p_2\$ as permutations of \$n\$ elements via the bijection described above; applies the first to the second; and outputs the corresponding integer, reapplying the above bijection. For example:
$ ./perm.sh 3 2 5
3

This is code-golf so the shortest code in bytes wins
J, 30

I like the elegance of this:

[:A.[:{/]A.~/~i.@[


or this:

13 :'A.{/(i.x)(A.)~/y'


but they work like this:

3 f 2 5
3
12 f 8 9
17


So this is the valid entry:

([:A.[:{/i.@{.A.~/}.)".}.&gt;ARGV


Some explanations:


3 A. 0 1 2: gives the 3rd permutation of 0 1 2 (= 1 2 0)
0 1 2 (A.)~ 3: is the same but with arguments reversed
0 1 2 (A.)~/ 3 4 5 ... "applies" (A.)~ to 3 4 5 ..., so it gives the 3rd, 4th, 5th, ... permutation of 0 1 2.
A. 1 2 0: gives the order of the permutation of 1 2 0 (= 3)
i. n: gives the sequence 0 1 2 ... n-1
1 2 0 { 0 2 1 arranges 0 2 1 by 1 2 0 (= 2 1 0)