Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのブーメランの数


平面内にすべてペアごとに異なるn個の点があるとします。ここで、「ブーメラン」は(i、j、k)のような点のタプルであり、iとjの間の距離はiとkの間の距離と同じになります。ブーメランの数を見つける必要があります。

したがって、入力が[[0,0]、[1,0]、[2,0]]の場合、2つのブーメランは[[1,0]、[0,0]であるため、出力は2になります。 、[2,0]]および[[1,0]、[2,0]、[0,0]]。

これを解決するには、次の手順に従います-

  • counter_of_boomerangs:=0

  • ポイント配列のpoint_1ごとに、次のようにします

    • x1、y1 =point_1

    • distance_count_dict

      というマップを定義します
    • ポイント配列のpoint_2ごとに、次のようにします

      • x2、y2 =point_2

      • diff_x:=x2-x1

      • diff_y:=y2-y1

      • dist:=diff_x ^ 2 + diff_y ^ 2

      • distance_count_dict [dist]:=distance_count_dict [dist] + 1

    • distance_count_dictの各dに対して-

      • n:=distance_count_dict [d]

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

  • counter_of_boomerangsを返す

理解を深めるために、次の実装を見てみましょう-

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. Pythonの単一の数値

    配列Aがあるとします。この配列には、2回出現する多数の数値があります。一度に見つけることができる要素は1つだけです。その配列からその要素を見つける必要があります。 A =[1、1、5、3、2、5、2]とすると、出力は3になります。各数値が2回あるため、XORを実行してその要素をキャンセルできます。 y XOR y =0がわかっているからです これを解決するために、次の手順に従います。 1つの変数res=0を取ります 配列Aの各要素eについて、プリフォームres =res XOR e return res 例 理解を深めるために、次の実装を見てみましょう- class Soluti

  2. Pythonの乱数

    説明 Pythonには、乱数を生成するための関数がほとんどありません。これらは、生成するために乱数が必要な多くのゲームや宝くじなどで使用できます。 乱数を生成する関数がいくつかあります- choice() この関数を使用して、数値のコレクションから1つの乱数を生成できます。 例 print (A random number from list : ,end=) print (random.choice([1, 4, 6, 100, 31])) 出力 A random number from list : 100 randrange(beg、end、step) この関数は