Wyzwanie
Dla danego zestawu n liczb całkowitych napisz program, który wyświetli jego indeks leksykograficzny.
Zasady
- Dane wejściowe muszą być tylko zbiorem unikatowych nieujemnych liczb całkowitych oddzielonych spacjami.
- Powinieneś wypisać indeks leksykograficzny (zakres od 0 do n! -1 włącznie) permutacji.
- Nie można używać bibliotek permutacji ani wbudowanych permutacji.
- Nie możesz wygenerować zestawu permutacji ani żadnego podzbioru permutacji danych wejściowych, aby pomóc ci znaleźć indeks.
- Nie można również zwiększać ani zmniejszać danej permutacji do następnej / poprzedniej (leksykograficznie) permutacji.
- Punkty bonusowe (-10 bajtów), jeśli znajdziesz sposób, aby to zrobić bez użycia silni.
- Czas działania powinien być krótszy niż 1 minuta dla n = 100
- Wygrywa najkrótszy kod bajtowy
- Zwycięzca wybrany we wtorek (22 lipca 2014 r.)
Więcej informacji o permutacjach
- http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html
- Operacja grupy permutacji
- http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html
Przykłady
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