단어의 순위를 찾으십시오 같이 문자의 가능한 모든 순열 (또는 배열)이

정의

단어의 순위는 단어의 의미와 상관없이 사전에서와 같이 문자의 가능한 모든 순열 (또는 배열)이 사전 순으로 정렬 될 때 단어의 위치로 정의됩니다.

이 두 단어 “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

입력이 완전히 소문자라고 가정 할 수 있으며 입력에는 알파벳 문자 만 포함 됩니다 . 또한 공백이나 유효하지 않은 문자열을 입력하면 아무 것도 반환 할 수 있습니다.

채점

이것은 이므로 가장 짧은 코드가 승리합니다!



답변

가이아 , 4 바이트

fuȯI

온라인으로 사용해보십시오!


답변

파이썬 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*

온라인으로 사용해보십시오!


답변

CJam , 8 바이트

q_e!\a#)

온라인으로 사용해보십시오!

1 인덱싱 된 요구 사항으로 인해 +1 바이트