कार्य विवरण
कभी-कभी, आपको वास्तव में एक छोटी सी जगह में कुछ लिखने की आवश्यकता होती है। यह स्वर और 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 वर्णों को हिट करते हैं, तो हमने सभी स्वरों और रिक्त स्थान को हटा दिया है , इसलिए हम बस स्ट्रिंग को दाएं से बाएं ओर कुतरना शुरू करते हैं।
यहाँ कुछ छद्मकोड पायथन कोड है जो इस चुनौती को हल करता है:
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
नियम
यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है।
इनपुट स्ट्रिंग में अंतरिक्ष से प्रिंट करने योग्य एएससीआईआई अक्षर (
, दशमलव 32) और टिल्ड (
~
, दशमलव 126) शामिल होंगे।AEIOU
स्ट्रिंग में कोई अपरकेस स्वर नहीं होंगे । विशेष रूप से, इसमें कोई यूनिकोड, टैब या शामिल नहीं होंगे।इनपुट स्ट्रिंग s और इनपुट लक्ष्य लंबाई t को कॉल करें । फिर 0 <t (लंबाई ( s ) ≤ 10000 की गारंटी है। (विशेष रूप से, इनपुट स्ट्रिंग कभी खाली नहीं होगी। यदि टी = लंबाई ( एस ), तो आपको केवल स्ट्रिंग को बिना लाइसेंस वापस कर देना चाहिए।)
परीक्षण के मामलों
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
। : -ओ
for index, char in enumerate(string)
बजाय विचार करेंrange(len(str))
y
एक स्वर?