কার্য বিবরণী
কখনও কখনও, আপনি একটি ছোট জায়গায় লিখছেন এমন কোনও জিনিসটির সত্যই আপনার প্রয়োজন হয়। স্বরগুলি ছেড়ে দেওয়া এবং লোকেদের ছেড়ে দেওয়ার জন্য এটি লোভনীয় হতে পারে - এবং এটি ব্যর্থ হচ্ছে, সত্যিকারের স্থানগুলির প্রয়োজন কার? 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
বিধি
এটি কোড-গল্ফ , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।
ইনপুট স্ট্রিংটিতে প্রিন্টযোগ্য ASCII অক্ষরগুলি স্থান থেকে (
, দশমিক 32) পর্যন্ত টিলড (এবং
~
দশমিক 126) সহ থাকবে ।AEIOU
স্ট্রিংয়ে কোনও বড় হাতের অক্ষর থাকবে না । বিশেষত, কোনও ইউনিকোড, ট্যাব বা নতুনলাইন জড়িত থাকবে না।ইনপুট স্ট্রিং গুলি এবং ইনপুট লক্ষ্য দৈর্ঘ্যের টি কল করুন । তারপরে 0 <t ≤ দৈর্ঘ্য ( গুলি ) 00 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
স্বর কি ?