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

পাইথনে একটি লিস্টের সব উপাদান সর্ট করে স্ট্রিংয়ে মর্জ করার প্রোগ্রাম

এই প্রোগ্রামে একটি পজিটিভ ইন্টিজার লিস্টকে ডিসেন্ডিং অর্ডারে সর্ট করে সব উপাদানকে একসাথে জয়েন করে একটি স্ট্রিং তৈরি করা হয়।

সমস্যা বিবরণ

ইনপুট: [415, 78, 954, 123, 5]

আউটপুট: 954785415123

সমাধানের পদ্ধতি

  1. একটি কাস্টম কম্পারেটর ফাংশন cmp() ডিফাইন করুন যা দুটি সংখ্যা l এবং r তুলনা করে।
  2. যদি int(str(l) + str(r)) > int(str(r) + str(l)) হয়, তবে 1 রিটার্ন করুন, অন্যথায় -1।
  3. লিস্টকে এই কম্পারেটর ব্যবহার করে সর্ট করুন (reverse=Trueসহ)।
  4. সর্ট করা লিস্টের সব উপাদানকে join() করে স্ট্রিং বানান।

পাইথন কোড

from functools import cmp_to_key

def cmp(l, r):
    if int(str(l) + str(r)) > int(str(r) + str(l)):
        return 1
    else:
        return -1

def solve(input_list):
    input_list.sort(key=cmp_to_key(cmp), reverse=True)
    return "".join(map(str, input_list))

# টেস্ট
print(solve([415, 78, 954, 123, 5]))  # আউটপুট: 954785415123

কীভাবে কাজ করে

কম্পারেটর দুটি সংখ্যার কনক্যাটেনেটেড ভ্যালু তুলনা করে বড় সংখ্যা তৈরি করার অর্ডার নির্ধারণ করে। উদাহরণস্বরূপ, 954 এবং 78-এর জন্য: 95478 > 78954, তাই 954 আগে আসবে।

  1. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম

  2. পাইথনে লিস্ট থেকে ইনপুট স্ট্রিং-এর ক্লোজ ম্যাচ (Close Matches) খুঁজে বের করা

  3. পাইথনে লিস্টের বিজোড় ও জোড় উপাদান আলাদা দুটি লিস্টে ভাগ করার প্রোগ্রাম

  4. পাইথনে ক্যারেক্টারের লিস্টকে স্ট্রিংয়ে রূপান্তর করার প্রোগ্রাম