ধরুন আমাদের একটি আলফানিউমেরিক স্ট্রিং আছে। আমাদের নিম্নলিখিত শর্তের উপর ভিত্তি করে এটি সাজাতে হবে
-
সমস্ত সাজানো ছোট হাতের অক্ষরগুলি বড় হাতের অক্ষরের আগে স্থাপন করা হবে৷
৷ -
সমস্ত সাজানো বড় হাতের অক্ষরগুলি অঙ্কের আগে স্থাপন করা হবে৷
-
সাজানো জোড় সংখ্যার আগে সমস্ত সাজানো বিজোড় সংখ্যা স্থাপন করা হবে।
সুতরাং, যদি ইনপুটটি s ="HeLlo1234" এর মত হয়, তাহলে আউটপুট হবে eloHL1324
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন f()। এটি c লাগবে
- কোড :=0
- যদি c বড় হাতের হয়, তাহলে
- কোড :=10^3
- অন্যথায় যখন c একটি অঙ্ক হয়, তখন
- কোড :=10^6
- যদি c-এর ASCII জোড় হয়, তাহলে
- কোড :=10^9
- রিটার্ন কোড + c এর ASCII
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন
- l :=s এর বাছাই করা তালিকা এবং f() ফাংশন কল করে প্রতিটি অক্ষর c s এ ক্রম করুন
- প্রতিটি অক্ষর l এ যোগ দিন এবং ফিরে আসুন
উদাহরণ
আরও ভালোভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি
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