タスクの説明
場合によっては、書いているものを小さなスペースに収める必要があります。母音とwrt lk thsを落とすのは魅力的かもしれません-それに失敗すると、誰が本当にスペースを必要としますか?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
文字列には大文字の母音はありません。特に、Unicode、タブ、改行は含まれません。入力文字列sおよび入力ターゲット長tを呼び出します。0 <t≤length(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
もちろん、この1のために定住しています母音は!ある)、それは母音の集合であることを述べていない場所のためにaeiou
、あなたは時々含めるべきであるy
とw
。:-O
for index, char in enumerate(string)
ですが、range(len(str))
コンストラクトの代わりに検討してください
y
母音は?