Ada suatu penambangan yang terkenal antara permutasi dari n elemen dan angka 0 sampai n! -1 sehingga urutan leksikografis dari permutasi dan angka yang sesuai adalah sama. Misalnya, dengan 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)
Juga diketahui bahwa permutasi n elemen membentuk suatu kelompok (grup simetris orde!) - jadi, khususnya, satu permutasi elemen n yang diterapkan pada permutasi kedua elemen n menghasilkan permutasi elemen n .
Misalnya, (1, 0, 2) diterapkan pada (a, b, c) hasil (b, a, c), jadi (1, 0, 2) diterapkan pada (2, 1, 0) hasil (1, 2) , 0).
Tulis program yang membutuhkan tiga argumen integer: n, p1, dan p2; menafsirkan p1 dan p2 sebagai permutasi dari n elemen; berlaku yang pertama ke yang kedua; dan menampilkan bilangan bulat yang sesuai. Sebagai contoh:
$ ./perm.sh 3 2 5
3
sumber
A.
kemarin, tetapi terlalu lelah untuk mencoba dan menyusun dalam urutan yang benar untuk pertanyaan O :-)Ruby - 77 karakter
sumber
ARGV.map{|x|x.to_i}
->$*.map &:to_i
menyimpan beberapa karakter lainnya. Dan Anda dapat mengganti baris kedua denganl=[*[*0...n].permutation]
.Python 2.6, 144 karakter
sumber