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

Pythonで2つの長方形のオーバーラップをチェックするかどうかをプログラムする


4つの要素[x1、y1、x2、y2]を持つリストとして表される長方形があるとします。ここで、(x1、y1)は左下隅の座標であり、(x2、y2)はitstop-右隅。 2つの長方形は、それらの交点の面積が正の場合に重なります。したがって、コーナーまたはエッジでのみ接触する2つの長方形は重なりません。

したがって、入力がR1 =[0,0,2,2]、R2 =[1,1,3,3]の場合、出力はTrueになります。

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

  • R1 [0]> =R2[2]またはR1[2]<=R2[0]またはR1[3]<=R2[1]またはR1[1]>=R2 [3]の場合、
    • Falseを返す
  • それ以外の場合、
    • Trueを返す

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

class Solution:
   def solve(self, R1, R2):
      if (R1[0]>=R2[2]) or (R1[2]<=R2[0]) or (R1[3]<=R2[1]) or (R1[1]>=R2[3]):
         return False
      else:
         return True
ob = Solution()
print(ob.solve([0,0,3,3],[1,1,4,4]))

入力

[0,0,3,3],[1,1,4,4]

出力

True

  1. Pythonでヒープが最大ヒープを形成しているかどうかを確認するプログラム

    ヒープツリーを表すリストがあるとします。私たちが知っているように、ヒープは完全な二分木です。要素が最大ヒープを形成しているかどうかを確認する必要があります。最大ヒープについて知っているように、すべての要素はその子の両方よりも大きくなります。 したがって、入力がnums =[8、6、4、2、0、3]のような場合、すべての要素が子よりも大きいため、出力はTrueになります。 これを解決するには、次の手順に従います- n:=numsのサイズ 0からn-1の範囲のiの場合、do m:=i * 2 num:=nums [i] m + 1

  2. Pythonで奇数の長さのサイクルがグラフにあるかどうかを確認するプログラム

    無向グラフがあり、その中に奇数の長さのサイクルが見つかるかどうかを確認する必要があるとします。 したがって、入力がadj_list =[[1、2]、[0、3、4]、[0、3、4]、[1、2、4]、[1、2、3]] [0、1、3、4、2]、[1、3、4]、[2、3、4]のような奇数の長さのサイクルがあるため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります、私 ノードがパス内にある場合、 (i --path [node])が奇数の場合はtrueを返します ノードにアクセスした場合、 Falseを返す