과업 설명
때때로, 당신은 정말로 당신이 쓰고있는 무언가를 작은 공간에 맞출 필요가 있습니다. 모음을 떨어 뜨리고 유혹을하는 유혹이있을 수 있습니다. 실제로 공간이 필요한 사람은 누구입니까? Thssprfctlrdbl! †
이 모음 제거합니다 소문자하는 기능 또는 프로그램을 작성 aeiou
하고 공간하고 어떤 문자를 입력 문자열 . 또한 캐릭터를 제거 할 때마다 제거 할 수있는 가장 오른쪽 캐릭터 여야합니다 . 문자열이 주어진 입력 길이보다 길지 않을 때까지이 과정을 반복해야합니다 .
†“이것은 완벽하게 읽을 수 있습니다!”그러나이 각주를 읽고 있다면 아마 실제로는 그렇지 않을 것입니다. :)
예
여기에서이 프로세스가 더 작은 입력 크기에 적용되는 것을 볼 수 있습니다.
23: Hello, Code Golf World!
22: Hello, Code Golf Wrld!
21: Hello, Code Glf Wrld!
20: Hello, Cod Glf Wrld!
19: Hello, Cd Glf Wrld!
18: Hell, Cd Glf Wrld!
17: Hll, Cd Glf Wrld!
16: Hll, Cd GlfWrld!
15: Hll, CdGlfWrld!
14: Hll,CdGlfWrld!
13: Hll,CdGlfWrld
12: Hll,CdGlfWrl
11: Hll,CdGlfWr
(etc.)
문자열을 17 자로 줄인 후에는 모음이 없어서 제거 할 다음 문자가 가장 오른쪽 공간입니다. 14자를 칠 때 모음 과 공백을 모두 제거 했으므로 문자열을 오른쪽에서 왼쪽으로 움직이기 시작합니다.
이 문제를 해결 하는 의사 코드 Python 코드 는 다음과 같습니다 .
def crunch_string(string, to_length):
while len(string) > to_length:
# Store the best candidate index for deletion here.
best = None
# First, find the rightmost vowel's index.
for i in range(len(string)):
if string[i] in 'aeiou':
best = i
# If there were no vowels, find the rightmost space's index.
if best is None:
for i in range(len(string)):
if string[i] == ' ':
best = i
# If there were no spaces either, use the final index.
if best is None:
best = len(string) - 1
# Remove the selected character from the string.
string = string[:best] + string[best + 1:]
# Return the string once `len(string) <= to_length`.
return string
규칙
이것은 code-golf 이므로 바이트 단위의 가장 짧은 코드가 이깁니다.
입력 문자열은 공백 (
, 10 진수 32)에서 물결표 (
~
, 10 진수 126) 까지 의 인쇄 가능한 ASCII 문자로 구성됩니다 .AEIOU
문자열 에는 대문자 모음이 없습니다 . 특히, 유니 코드, 탭 또는 줄 바꿈이 포함되지 않습니다.입력 문자열 s 및 입력 대상 길이 t를 호출하십시오 . 그런 다음 0 <t ≤ 길이 ( s ) ≤ 10000이 보장됩니다. (특히, 입력 문자열은 절대로 비어 있지 않습니다. t = length ( s )이면 문자열을 수정하지 않고 반환해야합니다.)
테스트 사례
Input: 50, Duis commodo scelerisque ex, ac consectetur metus rhoncus.
Output: Duis commodo scelerisque ex, ac cnscttr mts rhncs.
Input: 20, Maecenas tincidunt dictum nunc id facilisis.
Output: Mcnstncdntdctmnncdfc
Input: 150, golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf golf
Output: glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glf glfglfglfglfglfglfglfglfglfglf
aeiou
모음 AEIOU
은 간단하며 발생하지 않습니다. (전체 대문자 / 소문자는 내가 집중하고 싶은 것이 아닙니다.) 나는 설명을 추가했습니다.
w
(단어 공동, 예를 들어 w , w
물론,이 일을 위해 정착 모음은!이다)하지만,이 모음 세트임을 명시되지 않은 어디에 위해 aeiou
, 당신은 때때로 포함해야 y
하고 w
. : -O
for index, char in enumerate(string)
, range(len(str))
구조 대신에 고려
y
모음는?