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

3D形状の投影領域


N x Nグリッドがあるとすると、x、y、zに軸合わせされた1 x 1x1の立方体を配置します。ここで、各値v =grid [i] [j]は、グリッドセル(i、j)の上に配置されたvキューブのタワーを示しています。これらの立方体のxy、yz、およびzx平面への投影を表示します。ここでは、立方体を上面、正面、側面から見たときの投影を表示しています。 3つの投影すべての総面積を見つける必要があります。

したがって、入力が[[1,2]、[3,4]]

のような場合

3D形状の投影領域

その場合、出力は17になります。

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

  • xy:=0、yz:=0、xz:=0
  • グリッド内の各行インデックスrと行について、
    • yz:=yz+行の最大値
    • 行の各列インデックスcと列列に対して、
        を実行します。
      • grid [r] [c]> 0がゼロ以外の場合、
        • xy:=xy + 1
    • グリッド内の各列について、
      • xz:=xz+最大列
  • return xy + yz + xz

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

class Solution(object):
   def projectionArea(self, grid):
      xy = 0
      yz = 0
      xz = 0
      for r, row in enumerate(grid):
         yz += max(row)
         for c, col in enumerate(row):
            if grid[r][c] > 0:
               xy += 1
            for col in zip(*grid):
               xz += max(col)
      return xy + yz + xz
ob = Solution()
print(ob.projectionArea([[1,2],[3,4]]))

入力

[[1,2],[3,4]]

出力

17

  1. 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):=(fir

  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 *