문자열 목록이 주어지면 어떤 염기가 사용되는지 모른 채 목록을 숫자로 정렬하십시오. 숫자의 값도 알 수 없습니다 ( '1'> '2').
자릿수 값을 알 수 없으므로 Benford의 법칙 (또는 첫 번째 자릿수 법칙)을 사용하여 자릿수의 상대 값을 결정하십시오. Benford의 법칙을 따르는 분포의 경우 값이 작은 숫자가 값이 큰 숫자보다 선행 숫자로 더 자주 나타납니다.
규칙
- 이것은 코드 골프입니다
- 문자열 목록은 선택한 소스 (stdin, variable, file, user 등)에서 올 수 있습니다.
- 문자열은 ASCII 문자로 제한됩니다.
- 선행 문자로 표시되지 않는 문자는 가장 높은 값을 갖습니다. (0이 없다고 가정하고 선행 빈도로 엄격하게 정렬하십시오.)
- 다른 문자와 같은 횟수만큼 선행 숫자로 나타나는 문자는 가중치가 동일합니다.
예
분류되지 않은
['c','ca','ac','cc','a','ccc','cx','cz','cy']
정렬
['c','a','cc','ca','cz','cy','cx','ac','ccc']
참고 예에서 'cz', 'cy'그리고 'cx'5, 6 및 숫자 보낸 임의의 순서로 7 요소로 나타날 수 'x', 'y'과 'z'똑같이 가중된다.
"문자열은 ASCII 문자로 제한됩니다." 이 예에서는 영숫자 만 표시합니다 (실제로는 알파벳 문자 만 표시). 모든 ASCII 문자 또는 [0-9a-zA-Z] 만 의미합니까? 소문자는 대문자와 동일하거나 다르게 계산됩니까?
—
Joshua Taylor
모든 ASCII 문자가 지원되어야하며 대문자와 소문자가 다릅니다.
—
Rynant 2016 년