Le défi
Pour un ensemble donné de n entiers, écrivez un programme qui affichera son index lexicographique.
Les règles
- L'entrée ne doit être qu'un ensemble d'entiers non négatifs uniques séparés par des espaces.
- Vous devez sortir l'index lexicographique (plage de 0 à n! -1 inclus) de la permutation.
- Aucune bibliothèque de permutation ou intégration de permutation ne peut être utilisée.
- Vous ne pouvez pas générer l'ensemble de permutations ou tout sous-ensemble de permutations de l'entrée pour vous aider à trouver l'index.
- Vous ne pouvez pas non plus incrémenter ou décrémenter la permutation donnée à la permutation suivante / précédente (lexicographiquement).
- Points bonus (-10 octets) si vous trouvez un moyen de le faire sans utiliser de factoriels.
- Le temps d'exécution doit être inférieur à 1 minute pour n = 100
- Le plus court code par nombre d'octets gagne
- Gagnant choisi mardi (22 juillet 2014)
En savoir plus sur les permutations
- http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html
- Fonctionnement du groupe de permutation
- http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html
Exemples
0 1 2 --> 0
0 2 1 --> 1
1 0 2 --> 2
1 2 0 --> 3
2 0 1 --> 4
2 1 0 --> 5
0 1 2 3 4 5 6 7 --> 0
0 1 2 3 4 5 7 6 --> 1
0 1 2 3 4 6 5 7 --> 2
1 3 5 17 --> 0
781 780 779 13 --> 23
81 62 19 12 11 8 2 0 --> 40319
195 124 719 1 51 6 3 --> 4181