কম্পিউটার

পাইথনে বুমেরাঙ্গের সংখ্যা


ধরুন আমাদের সমতলে n পয়েন্ট আছে যেগুলো সব জোড়ায় আলাদা। এখন একটি "বুমেরাং" হল (i, j, k) এর মত বিন্দুর একটি টিপল যাতে i এবং j এর মধ্যে দূরত্ব i এবং k এর মধ্যে দূরত্বের সমান। আমাদের বুমেরাং সংখ্যা খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি [[0,0],[1,0],[2,0]] এর মত হয়, তাহলে আউটপুট হবে 2, যেমন দুটি বুমেরাং [[1,0],[0,0] ,[2,0]] এবং [[1,0],[2,0],[0,0]]।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • counter_of_boomerangs :=0

  • পয়েন্ট অ্যারেতে প্রতিটি পয়েন্ট_1 এর জন্য, করুন

    • x1, y1 =পয়েন্ট_1

    • দূরত্ব_গণনা_ডিক্ট

      নামে একটি মানচিত্র সংজ্ঞায়িত করুন
    • পয়েন্ট অ্যারেতে প্রতিটি পয়েন্ট_2 এর জন্য, করুন

      • x2, y2 =পয়েন্ট_2

      • diff_x :=x2 - x1

      • diff_y :=y2 - y1

      • dist :=diff_x^2 + diff_y^2

      • দূরত্ব_গণনা_ডিক্ট[ dist ] :=দূরত্ব_গণনা_ডিক্ট[ dist ] + 1

    • দূরত্ব_গণনা_ডিক্ট -

      -এ প্রতিটি d-এর জন্য
      • n :=দূরত্ব_গণনা_ডিক্ট[ডি]

      • counter_of_boomerangs :=counter_of_boomerangs + n * (n - 1)

  • কাউন্টার_অফ_বুমেরাং

    ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

from collections import defaultdict
class Solution:
   def numberOfBoomerangs(self, points):
      counter_of_boomerangs = 0
      for point_1 in points:
         x1, y1 = point_1
         distance_count_dict = defaultdict( int )
         for point_2 in points:
            x2, y2 = point_2
            diff_x = x2-x1
            diff_y = y2-y1
            dist = diff_x ** 2 + diff_y ** 2
            distance_count_dict[ dist ] += 1
         for d in distance_count_dict:
            n = distance_count_dict[d]
            counter_of_boomerangs += n * (n-1)
      return counter_of_boomerangs

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

ইনপুট

[[0,0],[1,0],[2,0]]

আউটপুট

0

  1. পাইথনে ফিজ বাজ

  2. পাইথনে 1 বিটের সংখ্যা

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

  4. পাইথনে এলোমেলো সংখ্যা