El reto
Para un conjunto dado de n enteros, escriba un programa que genere su índice lexicográfico.
Las normas
- La entrada solo debe ser un conjunto de enteros no negativos únicos separados por espacios.
- Debe generar el índice lexicográfico (rango 0 a n! -1 inclusive) de la permutación.
- No se pueden usar bibliotecas de permutación ni elementos integrados de permutación.
- No puede generar el conjunto de permutaciones o cualquier subconjunto de permutaciones de la entrada para ayudarlo a encontrar el índice.
- Tampoco puede aumentar o disminuir la permutación dada a la permutación siguiente / anterior (lexicográficamente).
- Puntos de bonificación (-10 bytes) si encuentra alguna forma de completar esto sin usar factoriales.
- El tiempo de ejecución debe ser inferior a 1 minuto para n = 100
- El código más corto por conteo de bytes gana
- Ganador elegido el martes (22 de julio de 2014)
Más acerca de las permutaciones
- http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html
- Operación de grupo de permutación
- http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html
Ejemplos
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