ধরুন আমাদের একটি অ্যালফানিউমেরিক স্ট্রিং s আছে। নিচের শর্ত অনুযায়ী এটিকে সর্ট করতে হবে:
- সभी সর্ট করা ছোট হাতের অক্ষর বড় হাতের অক্ষরের আগে থাকবে
- সभी সর্ট করা বড় হাতের অক্ষর ডিজিটের আগে থাকবে
- সभी সর্ট করা বিজোড় ডিজিট জোড় ডিজিটের আগে থাকবে
উদাহরণস্বরূপ, যদি ইনপুট s = "HeLlo1234" হয়, তবে আউটপুট হবে eloHL1324।
সমাধানের ধাপসমূহ
f()ফাংশন ডিফাইন করুন যাcনেবেcode := 0- যদি
cবড় হাতের হয়, তবেcode := 10^3 - অন্যথায় যদি
cডিজিট হয়, তবেcode := 10^6 - যদি
c-এর ASCII ভ্যালু জোড় হয়, তবেcode := 10^9 code + ASCII of cরিটার্ন করুন- মেইন মেথড থেকে
s-এর সর্ট করা লিস্ট বানানf()ফাংশন কল করে প্রতিটি ক্যারেক্টারের জন্য - সব ক্যারেক্টার জয়েন করে রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
def f(c):
code = 0
if c.isupper():
code = 10 ** 3
elif c.isdigit():
code = 10 ** 6
if ord(c) % 2 == 0:
code = 10 ** 9
return code + ord(c)
def solve(s):
l = sorted(s, key=lambda c: f(c))
return ''.join(l)
s = "HeLlo1234"
print(solve(s))
ইনপুট
"HeLlo1234"
আউটপুট
eloHL1324