Die Herausforderung
Schreiben Sie für einen bestimmten Satz von n ganzen Zahlen ein Programm, das seinen lexikografischen Index ausgibt.
Die Regeln
- Die Eingabe darf nur eine Reihe eindeutiger nicht negativer Ganzzahlen sein, die durch Leerzeichen getrennt sind.
- Sie sollten den lexikografischen Index (Bereich 0 bis einschließlich n! -1) der Permutation ausgeben.
- Es dürfen keine Permutationsbibliotheken oder Permutationsintegrationen verwendet werden.
- Möglicherweise generieren Sie keine Permutationsmenge oder eine Teilmenge von Permutationen der Eingabe, um den Index zu finden.
- Sie können die angegebene Permutation auch nicht auf die nächste / vorherige (lexikografisch) Permutation erhöhen oder verringern.
- Bonuspunkte (-10 Bytes), wenn Sie einen Weg finden, dies ohne Verwendung von Fakultäten zu vervollständigen.
- Die Laufzeit sollte für n = 100 weniger als 1 Minute betragen
- Die kürzeste Anzahl von Code pro Byte gewinnt
- Gewinner ausgewählt Dienstag (22. Juli 2014)
Weitere Informationen zu Permutationen
- http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html
- Permutationsgruppenoperation
- http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html
Beispiele
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