ধরুন আমাদের সমতলে 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