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

পাইথনে প্রথম ও শেষ জোড়ার গুণফল সমান হয় এমন চতুর্দল (quadruples) সংখ্যা বের করার প্রোগ্রাম


ধরুন, nums নামে একটি সংখ্যা তালিকা আছে, যাতে уникал পজিটিভ নাম্বারস nums আছে। আমাদের nums-থেকে (a, b, c, d) রূপে চতুর্দল (quadruples) সংখ্যা বের করতে হবে যাতে a*b = c*d, এবং a, b, c, d সবাই nums-এর দীর্ঘ উপাদান।

সুতরাং, যদি ইনপুট হয় nums = [3, 6, 4, 8], তবে আউটপুট হবে 8, কারণ চতুর্দলগুলো হল [[3,8,6,4], [3,8,4,6], [8,3,6,4], [8,3,4,6], [6,4,3,8], [4,6,3,8], [6,4,8,3], [4,6,8,3]]।

এটি সমাধান করার জন্য, আমরা নিচের ধাপগুলো অনুসরণ করব:

  • c := একটি নতুন ম্যাপ
  • n := nums-এর সাইজ
  • i in range 0 to n - 1 এর জন্য, করুন:
    • j in range i + 1 to n - 1 এর জন্য, করুন:
      • x := nums[i] * nums[j]
      • c[x] := 1 + (c[x] যদি উপলব্ধ থাকে, অন্যথায় 0)
  • ret := 0
  • c-এর সকল ভ্যালুতে x এর জন্য, করুন:
    • ret := ret + x * (x - 1)
  • ret * 4 ফেরত দিন

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

def solve(nums):
    c = {}
    n = len(nums)
    for i in range(n):
        for j in range(i + 1, n):
            x = nums[i] * nums[j]
            c[x] = c.get(x, 0) + 1
    ret = 0
    for x in c.values():
        ret += x * (x - 1)
    return ret * 4

nums = [3, 6, 4, 8]
print(solve(nums))

ইনপুট

[3, 6, 4, 8]

আউটপুট

8
  1. পাইথনে প্রথম থেকে শেষ নোড পর্যন্ত রেস্ট্রিক্টেড পথের সংখ্যা বের করার প্রোগ্রাম

  2. পাইথনে তালিকায় ডুপ্লিকেট উপাদান খুঁজে বের করে তাদের শেষ ঘটনা মুছে ফেলার প্রোগ্রাম

  3. পাইথনে প্রথম ও শেষ মান সমান সাবলিস্টের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে একই প্রথম অক্ষরের সবচেয়ে বড় কনটিগুয়াস সাবলিস্ট খুঁজে বের করার প্রোগ্রাম