Il existe une bijection bien connue entre les permutations de n éléments et les nombres de 0 à n! -1 de sorte que l'ordre lexicographique des permutations et des nombres correspondants est le même. Par exemple, avec n = 3:
0 <-> (0, 1, 2)
1 <-> (0, 2, 1)
2 <-> (1, 0, 2)
3 <-> (1, 2, 0)
4 <-> (2, 0, 1)
5 <-> (2, 1, 0)
Il est également bien connu que les permutations de n éléments forment un groupe (le groupe symétrique d'ordre n!) - de sorte, en particulier, qu'une permutation de n éléments appliquée à une seconde permutation de n éléments donne une permutation de n éléments .
Par exemple, (1, 0, 2) appliqué aux rendements (a, b, c) (b, a, c), donc (1, 0, 2) appliqué aux rendements (2, 1, 0) (1, 2 , 0).
Écrivez un programme qui prend trois arguments entiers: n, p1 et p2; interprète p1 et p2 comme permutations de n éléments; applique le premier au second; et sort l'entier correspondant. Par exemple:
$ ./perm.sh 3 2 5
3
la source
A.
hier, mais j'étais trop fatigué pour essayer de monter dans le bon ordre pour la question O :-)Rubis - 77 caractères
la source
ARGV.map{|x|x.to_i}
->$*.map &:to_i
enregistre encore quelques caractères. Et vous pouvez remplacer la deuxième ligne parl=[*[*0...n].permutation]
.Python 2.6, 144 caractères
la source