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

Pythonの特定の領域と斜辺から直角三角形が可能かどうかを確認します


直角三角形の斜辺と面積があるとすると、この三角形の底辺と高さを見つける必要があります。不可能な場合はFalseを返します。

したがって、入力がhypo =10、area =24の場合、出力は(6、8)になります。

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

  • hypo_sq:=hypo * hypo
  • s:=(hypo_sq / 2.0)の平方根
  • maxArea:=底辺と斜辺hypoを使用して三角形の面積を計算します
  • area> maxAreaの場合、
    • Falseを返す
  • 左:=0.0、右:=s
  • while|右-左|> 0.000001、do
    • ベース:=(左+右)/ 2.0
    • 底辺と斜辺を使用した三角形の面積>=面積の場合、
      • 右:=ベース
    • それ以外の場合、
      • 左:=ベース
  • height:=(hypo_sq --base * base)の平方根と最も近い整数への丸め
  • 基数の最も近い整数への丸め
  • リターンベースと高さ

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

サンプルコード

from math import sqrt
 
def calculate_area(b, h):
   hei = sqrt(h*h - b*b);
   return 0.5 * b * hei

def solve(hypo, area):
   hypo_sq = hypo * hypo
   s = sqrt(hypo_sq / 2.0)
   maxArea = calculate_area(s, hypo)

   if area > maxArea:
      return False
     
   left = 0.0
   right = s
     
   while abs(right - left) > 0.000001:
      base = (left + right) / 2.0
      if calculate_area(base, hypo) >= area:
         right = base
      else:
         left = base
     
   height = round(sqrt(hypo_sq - base*base))
   base = round(base)
   return base, height

hypo = 10
area = 24
print(solve(hypo, area))

入力

10, 24

出力

(6, 8)

  1. PythonでベクトルAを回転させ、それにベクトルCを追加することで、ベクトルBに到達できるかどうかを確認します。

    2D平面に3つのベクトルx、y、zがあるとします。ベクトルxからベクトルyを90度(時計回り)回転させるか、必要に応じて何度でもzを追加して、ベクトルyを取得できるかどうかを確認する必要があります。 したがって、入力がx =(-4、-2)y =(-1、2)z =(-2、-1)のような場合、位置を取得するためにxにzを追加できるため、出力はTrueになります。 (-2、-1)、次に時計回りに90°回転して(-1、2)を取得します。 これを解決するには、次の手順に従います- 関数util()を定義します。これにはp、q、r、sが必要です d:=r * r + s * s dが0

  2. Pythonで最大の三角形の領域

    平面上の点のリストがあるとします。 3つの点で形成できる最大の三角形の領域を見つける必要があります。 したがって、入力が[[0,0]、[0,1]、[1,0]、[0,2]、[2,0]]の場合、出力は2になります。 これを解決するには、次の手順に従います- res:=0 N:=ポイントリストのサイズ 0からN-2の範囲のiの場合、do i +1からN-1の範囲のjの場合、do i + 2からNの範囲のkについては、 (x1、y1):=points [i]、 (x2、y2):=points [j]、 (x3、y3):=ポイント[k] res:=resの最大値、0.5 *