ধরুন আমাদের একটি আলফানিউমেরিক স্ট্রিং আছে। আমাদের নিম্নলিখিত শর্তের উপর ভিত্তি করে এটি সাজাতে হবে
-
সমস্ত সাজানো ছোট হাতের অক্ষরগুলি বড় হাতের অক্ষরের আগে স্থাপন করা হবে৷
৷ -
সমস্ত সাজানো বড় হাতের অক্ষরগুলি অঙ্কের আগে স্থাপন করা হবে৷
-
সাজানো জোড় সংখ্যার আগে সমস্ত সাজানো বিজোড় সংখ্যা স্থাপন করা হবে।
সুতরাং, যদি ইনপুটটি 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