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

পাইথনে বুমের্যাং গণনা (Number of Boomerangs)


সমস্যা বিবরণ

প্লেনে nটি ভিন্ন পয়েন্ট দেওয়া থাকে। একটি "বুমের্যাং" হলো (i, j, k) টাপল যেখানে i থেকে j এবং i থেকে k-এর দূরত্ব সমান। মোট বুমের্যাং সংখ্যা বের করুন।

উদাহরণ

points = [[0,0],[1,0],[2,0]] → আউটপুট: 2

বুমের্যাং: ([1,0],[0,0],[2,0]) এবং ([1,0],[2,0],[0,0])।

এলগরিদম

  1. ans = 0।
  2. প্রতিটি point_1 কে কেন্দ্র ধরে:
    • অন্য সব point_2 থেকে দূরত্বের বর্গ dist = (x2-x1)² + (y2-y1)² হিসাব করে defaultdict(int) এ কাউন্ট করুন।
    • প্রতিটি দূরত্ব d এর জন্য যদি nটি পয়েন্ট থাকে, তবে n * (n-1) বুমের্যাং তৈরি হয় (পারমুটেশন)।
    • ans += n * (n-1)।
  3. ans রিটার্ন করুন।

পাইথন বাস্তবায়ন

from collections import defaultdict

class Solution:
    def numberOfBoomerangs(self, points):
        ans = 0
        for x1, y1 in points:
            dist_count = defaultdict(int)
            for x2, y2 in points:
                dx = x2 - x1
                dy = y2 - y1
                dist = dx*dx + dy*dy
                dist_count[dist] += 1
            for n in dist_count.values():
                ans += n * (n - 1)
        return ans

ob = Solution()
print(ob.numberOfBoomerangs([[0,0],[1,0],[2,0]]))  # 2

ইনপুট / আউটপুট

ইনপুট: [[0,0],[1,0],[2,0]]
আউটপুট: 2
  1. পাইথনে ফিজবাজ (Fizz Buzz)

  2. পাইথনে ১ বিট গণনা (Hamming Weight)

  3. পাইথনে ফ্যাক্টোরিয়াল (factorial) বের করার তিনটি পদ্ধতি

  4. পাইথনে র‍্যান্ডম নম্বর (Random Numbers)