কম্পিউটার টিউটোরিয়াল

পাইথনে কাস্টম অর্ডারে স্ট্রিং সর্ট করার প্রোগ্রাম

ধরুন আমাদের একটি অ্যালফানিউমেরিক স্ট্রিং 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
  1. হিপ সর্টের পাইথন প্রোগ্রাম

  2. ককটেইল সর্টের পাইথন প্রোগ্রাম

  3. পাইথনে সিলেকশন সর্ট (Selection Sort)

  4. পাইথন প্রোগ্রাম: সিলেকশন সোর্ট অ্যালগরিদম