Pythonでポリゴンの領域を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。
したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。
これを解決するには、次の手順に従います-
- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です
- return x1 * y2-y1 * x2
- メインの方法から、次の手順を実行します
- N:=ポイントのサイズ
- (firstx、firsty):=points [0]
- (prevx、prevy):=(firstx、firsty)
- res:=0
- 1からN-1の範囲のiについては、
- (nextx、nexty):=points [i]
- res:=res + getInfo(prevx、prevy、nextx、nexty)
- prevx:=nextx
- prevy:=nexty
- res:=res + getInfo(prevx、prevy、firstx、firsty)
- return | res | / 2.0
例
理解を深めるために、次の実装を見てみましょう-
def getInfo(x1, y1, x2, y2): return x1*y2 - y1*x2 def solve(points): N = len(points) firstx, firsty = points[0] prevx, prevy = firstx, firsty res = 0 for i in range(1, N): nextx, nexty = points[i] res = res + getInfo(prevx,prevy,nextx,nexty) prevx = nextx prevy = nexty res = res + getInfo(prevx,prevy,firstx,firsty) return abs(res)/2.0 points = [(0, 0), (0,5), (3, 5), (3,0)] print(solve(points))
入力
[(0, 0), (0,5), (3, 5), (3,0)]
出力
15.0
-
Pythonでポリゴンの周囲を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)
-
Pythonのヒストグラムの下で最大の長方形の領域を見つけるプログラム
ヒストグラムの棒の高さを表す数値のリストがあるとします。バーの下に形成できる最大の長方形の領域を見つける必要があります。 したがって、入力がnums =[3、2、5、7]のような場合 その場合、出力は10になります これを解決するには、次の手順に従います- stk:=スタックで、最初に-1を挿入します 高さの最後に0を挿入 ans:=0 0から高さのサイズまでの範囲のiについては、 heights [i]