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

পাইথনে জোড় ও বিজোড় সংখ্যা আলাদা করে ক্রমশঃ আরোহী ও অবরোহী ক্রমে সর্ট করার প্রোগ্রাম


মনে করুন nums একটি সংখ্যার তালিকা। এটিকে নিচের শর্তাবলী মেনে সর্ট করতে হবে:

  • জোড় সংখ্যা আরোহী ক্রমে সর্ট হবে।
  • বিজোড় সংখ্যা অবরোহী ক্রমে সর্ট হবে।
  • জোড় ও বিজোড় সংখ্যাগুলোর আপেক্ষিক অবস্থান পরিবর্তন হবে না।

উদাহরণস্বরূপ, [9, 14, 12, 91, -4, 5] হলে আউটপুট [91, -4, 12, 9, 14, 5]।

সমাধানের ধাপসমূহ

  • evens := nums-এ থাকা জোড় সংখ্যাগুলোর তালিকা
  • odds := nums-এ থাকা বিজোড় সংখ্যাগুলোর তালিকা
  • evens সর্ট করুন
  • odds উল্টো ক্রমে সর্ট করুন
  • even_i := 0, odd_i := 0
  • index = 0 থেকে nums-এর আকার পর্যন্ত,
    • যদি nums[index] জোড় হয়, nums[index] := evens[even_i], even_i++
    • অন্যথায়, nums[index] := odds[odd_i], odd_i++
  • nums ফেরত দিন

উদাহরণ

class Solution:
    def solve(self, nums):
        evens = [num for num in nums if num % 2 == 0]
        odds = [num for num in nums if num % 2 != 0]
        evens.sort()
        odds.sort(reverse=True)
        even_i = 0
        odd_i = 0
        for index in range(len(nums)):
            if nums[index] % 2 == 0:
                nums[index] = evens[even_i]
                even_i += 1
            else:
                nums[index] = odds[odd_i]
                odd_i += 1
        return nums

ob = Solution()
print(ob.solve([9, 14, 12, 91, -4, 5]))

ইনপুট

[9, 14, 12, 91, -4, 5]

আউটপুট

[91, -4, 12, 9, 14, 5]
  1. পাইথনে রেঞ্জ থেকে সব বিজোড় সংখ্যা প্রিন্ট করা

  2. পাইথনে রেঞ্জ থেকে সব জোড় সংখ্যা প্রিন্ট করা

  3. পাইথনে বিষম ও জোড় অঙ্কগুলোর যোগফলের পার্থক্য বের করার প্রোগ্রাম

  4. পাইথনে টাপলসকে যেকোনো কী অনুযায়ী ক্রমবর্ধমান কন্ডিশনে সর্ট করার প্রোগ্রাম