도전
주어진 n 개의 정수 세트에 대해 사전 색인을 출력하는 프로그램을 작성하십시오.
규칙
- 입력은 공백으로 구분 된 고유 한 음이 아닌 정수 집합이어야합니다.
- 순열의 사전 색인 (0에서 n! -1까지의 범위)을 출력해야합니다.
- 순열 라이브러리 또는 순열 내장 기능을 사용할 수 없습니다.
- 색인을 찾는 데 도움이되도록 일련의 순열 또는 순열의 일부를 생성 할 수 없습니다.
- 주어진 순열을 다음 / 이전 (사전 순서) 순열로 늘리거나 줄일 수도 없습니다.
- 계승을 사용하지 않고이를 완료 할 수있는 방법을 찾으면 보너스 포인트 (-10 바이트)입니다.
- n = 100 인 경우 런타임은 1 분 미만이어야합니다.
- 바이트 수로 가장 짧은 코드 승리
- 수상자 화요일 (2014 년 7 월 22 일)
순열에 대한 추가 정보
- http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html
- 순열 그룹 작업
- http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html
예
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