정의
단어의 순위는 단어의 의미와 상관없이 사전에서와 같이 문자의 가능한 모든 순열 (또는 배열)이 사전 순으로 정렬 될 때 단어의 위치로 정의됩니다.
이 두 단어 “blue”와 “seen”을 고려해 봅시다. 우선, 우리는이 단어의 글자의 가능한 모든 배열을 알파벳 순서로 씁니다.
"blue": "belu","beul","bleu","blue","buel","bule","eblu","ebul","elub","elbu","eubl",
"eulb","lbeu","lbue","lebu","leub","lube","lueb","ubel","uble","uebl","uelb",
"ulbe","uleb"
"seen": "eens","eesn","enes","ense","esen","esne","nees","nese","nsee","seen",
"sene","snee"
이제 왼쪽에서 살펴보고 필요한 단어의 위치를 봅시다. 우리는 “blue”라는 단어가 4 번째 위치에 있고 “seen”이 10 위에 있다는 것을 알 수 있습니다. 따라서 “blue”라는 단어의 순위는 4이고 “seen”의 순위는 10입니다. 이것은 단어의 순위를 계산하는 일반적인 방법입니다. 1부터 계산을 시작하십시오.
태스크
당신의 임무는 단어를 입력으로 받아 순위를 표시하는 코드를 작성하는 것입니다. 순위는 출력이어야합니다. 반복되는 글자가 포함 된 단어에주의하십시오.
예
"prime" -> 94
"super" -> 93
"bless" -> 4
"speech" -> 354
"earth" -> 28
"a" -> 1
"abcd" -> 1
"baa" -> 3
입력이 완전히 소문자라고 가정 할 수 있으며 입력에는 알파벳 문자 만 포함 됩니다 . 또한 공백이나 유효하지 않은 문자열을 입력하면 아무 것도 반환 할 수 있습니다.
채점
이것은 code-golf 이므로 가장 짧은 코드가 승리합니다!
답변
답변
파이썬 3 , 71 바이트
lambda s:sum(t<=(*s,)for t in{*permutations(s)})
from itertools import*
답변
05AB1E , 5 바이트
ϐsk>
설명
œ # get permutations of input
ê # sort and remove duplicates
s # swap input to top of stack
k # get index of input in the list
> # increment
답변
Pyth , 6 바이트
hxS{.p
설명
hxS {.p || 전체 프로그램. .p || 입력의 모든 순열입니다. {|| 중복 제거. S || 종류. x || 이 목록에 대한 입력 색인. h || 증가.
답변
젤리 , 5 바이트
Œ!ṢQi
온라인으로 사용해보십시오! 또는 테스트 스위트를 참조하십시오
작동 원리
Œ!ṢQi - Main link. Argument: s (string) e.g. 'baa'
Œ! - All permutations ['baa', 'baa', 'aba', 'aab', 'aba', 'aab']
Ṣ - Sort ['aab', 'aab', 'aba', 'aba', 'baa', 'baa']
Q - Deduplicate ['aab', 'aba', 'baa']
i - 1-based index of s 3
답변
파이썬 2 , 78 바이트
lambda s:-~sorted(set(permutations(s))).index(tuple(s))
from itertools import*
파이썬 3 , 73 바이트
- Python 3을 선택해 주신 Mr. Xcoder 에게 감사드립니다 . 5 바이트 절약.
lambda s:-~sorted({*permutations(s)}).index((*s,))
from itertools import*