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

Pythonで点のリストが直線になるかどうかをチェックするプログラム


デカルト平面にリスト座標があるとすると、座標が直線セグメントを形成しているかどうかを確認する必要があります。

したがって、入力が座標=[(5、5)、(8、8)、(9、9)]のような場合、これらのポイントは勾配1の線分を形成しているため、出力はTrueになります。

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

  • (x0、y0):=座標[0]
  • (x1、y1):=座標[1]
  • iの範囲が2から座標リストのサイズ-1、do
    • (x、y):=座標[i]
    • (x0-x1)*(y1-y)が(x1-x)*(y0-y1)と同じでない場合、
      • Falseを返す
  • Trueを返す

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

class Solution:
   def solve(self, coordinates):
      (x0, y0), (x1, y1) = coordinates[0], coordinates[1]
      for i in range(2, len(coordinates)):
         x, y = coordinates[i]
         if (x0 - x1) * (y1 - y) != (x1 - x) * (y0 - y1):
            return False
      return True
ob = Solution()
coordinates = [[5, 5],[8, 8],[9, 9]]
print(ob.solve(coordinates))

入力

[[5, 5],[8, 8],[9, 9]]

出力

True

  1. 与えられたブロックのリストがPythonでx=y行に対して対称であるかどうかをチェックするプログラム

    numsという番号のリストがあるとします。そして、それは正方形のブロックの高さを表しています。形状がy=xの線上で対称であるかどうかを確認する必要があります。 したがって、入力がnums =[7、5、3、2、2、1、1]のような場合、出力はTrueになります これを解決するには、次の手順に従います。 i:=0 j:=numsのサイズ-1 i <=jの場合、do h:=nums [j] i

  2. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

    無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります