내 친구와 나는 우리가 단어를 가지고 노는이 게임을 가지고 있습니다. 그것은 재미있는 오락이며, 아무 것도 남지 않을 때까지 단어에서 글자를 "취소"하는 것과 관련이 있습니다. 나는 그가 그보다 나보다 훨씬 빠르다는 것에 정말로 지쳤습니다. 그래서 그것을 구현하고 마침내 그를 이길 수있는 것이 당신의 일입니다. 분명히, 프로그램을 가능한 한 쉽게 숨길 수 있도록해야하므로 가능한 작아야합니다.
이 게임은 어떻게 작동합니까?
이 게임은 매우 간단한 알고리즘입니다. 더 이상 줄일 수 없을 때까지 알파벳 문자열을 줄여서 일종의 해시로 만듭니다. 우리 인간이하는 실제 게임은 구현하기가 매우 어렵지만 다음 알고리즘으로 단순화 할 수 있습니다.
알파벳을 반으로 접고 다음과 같이 두 조각을 정렬합니다.
a b c d e f g h i j k l m
z y x w v u t s r p q o n
그런 다음 중간부터 시작하여 양의 정수를 위쪽 절반에, 음수를 아래쪽에 할당합니다.
a b c d e f g h i j k l m
13 12 11 10 9 8 7 6 5 4 3 2 1
z y x w v u t s r p q o n
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
그런 다음 문자열을 가져 와서 ( hello world
알파벳 문자를 무시하고) 번역하십시오.
h e l l o w o r l d
6 9 2 2 -2 -10 -2 -5 2 10
그런 다음 글자 값을 합산합니다. 이전 다이어그램에서 정렬 된 항목 (예 : d
및 w
, l
및 o
)은 취소되고 다른 다이어그램 은 추가됩니다.
sum(6 9 2 2 -2 -10 -2 -5 2 10 )=12
의 수는 12 b
이므로 해시 hello world
는b
완전히 취소 된 단어 (예 :)의 love
경우 "0 character"를 출력합니다 -
. 입력에서 -
여전히 무시됩니다. 출력에서만 중요합니다.
숫자의 크기가 13보다 크면 a
의 및에서 두 배로 증가하기 시작합니다. z
기본적으로 숫자에 많은 수 a
또는 z
적합을 취하고 마지막 글자에 남은 모든 것을 다음과 같이 취합니다.
code golf: 43.
3에 맞고 a
4 남음 :
aaa 4: j
result: aaaj
힌트 :이 부분은 기본적 divmod
으로 0이 아닌 반올림을 제외하고 는 예외입니다 -infinity
(예 : -43은 3이되고 z
a -4
는 p
그렇습니다 zzzp
).
참고 : a
의 또는 z
이 완벽하게 맞으면 대시가 오지 않습니다 0
.
설명 :
- 해시는 대소 문자 를 구분합니다
- 표준 허점 은 허용되지 않습니다
- I / O는 너무 외설적이지 않고 stdin, stdout, 명령 줄 인수, 함수 등이 아닌 형식 일 수 있습니다.
- 이것은 코드 골프 이므로 바이트 단위의 최단 크기가 이깁니다.
예 :
hello world --> b
love --> -
this is an example --> aak
hello *&*(&(*&%& world --> b
good bye --> ae
root users --> zzs
love
비어 있습니다.