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

পাইথন প্রোগ্রাম - দুটি সংখ্যার লিস্ট থেকে অনুপস্থিত সংখ্যাগুলো বের করুন

মনে করুন nums1 এবং nums2 দুটি সংখ্যার লিস্ট। উপাদানগুলো অনন্য নাও হতে পারে। কিন্তু এই দুটি লিস্ট আসলে একই সেটের বিভিন্ন পারমুটেশন। কিন্তু কিছু অনুপস্থিত আছে। আমাদের দুটি লিস্টের অনুপস্থিত সংখ্যাগুলো বের করে প্রিন্ট করতে হবে।

ইনপুট nums1 = [4,5,8,8,6,9], nums2 = [3,4,4,8,8,8,6,9,5,8] হলে আউটপুট হবে [3,4,8,8] কারণ ৩ nums1-এ নেই কিন্তু nums2-এ আছে। ৪ দুটোতে আছে কিন্তু nums2-এ দুইটি ৪ আছে, nums1-এ একটি, তাই একটি ৪ অনুপস্থিত। একইভাবে ৮ nums2-এ চারটি, nums1-এ দুটি, তাই দুটি ৮ অনুপস্থিত।

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

  • c1 := nums1-এ উপাদানগুলোর ফ্রিকোয়েন্সি
  • c2 := nums2-এ উপাদানগুলোর ফ্রিকোয়েন্সি
  • all_nums := nums1 এবং nums2-র সব ডISTINCT নম্বরের সেট
  • res := নতুন লিস্ট
  • all_nums-এ প্রতিটি n-এর জন্য:
    • যদি n c1-এ নেই: res-এ n, c2[n] বার যোগ করুন
    • অন্যথায় যদি n c2-এ নেই: res-এ n, c1[n] বার যোগ করুন
    • অন্যথায়, যদি c1[n] != c2[n]: res-এ n, |c1[n]-c2[n]| বার যোগ করুন
  • res ফেরত দিন

উদাহরণ

বাস্তবায়ন:

from collections import Counter

def solve(nums1, nums2):
    c1 = Counter(nums1)
    c2 = Counter(nums2)
    all_nums = set(nums1) | set(nums2)
    res = []
    for n in all_nums:
        if n not in c1:
            res = res + [n]*c2[n]
        elif n not in c2:
            res = res + [n]*c1[n]
        else:
            if c1[n] != c2[n]:
                res = res + [n]*abs(c1[n] - c2[n])
    return res

nums1 = [4,5,8,8,6,9]
nums2 = [3,4,4,8,8,8,6,9,5,8]
print(solve(nums1, nums2))

ইনপুট

[4,5,8,8,6,9], [3,4,4,8,8,8,6,9,5,8]

আউটপুট

[3, 4, 8, 8]
  1. দুই স্ট্রিং থেকে অনকমন ওয়ার্ড বের করার পাইথন প্রোগ্রাম

  2. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা

  3. পাইথনে দুটি লিস্টের ইন্টারসেকশন (Intersection) বের করা

  4. পাইথনে দুটি লিস্টে অনুপস্থিত ও অতিরিক্ত মান বের করার প্রোগ্রাম