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

Pythonで3D図形の表面積を見つける


N * M行列Aがあるとすると、これは3D図形の表現です。ポイント(i、j)での建物の高さはA[i][j]です。図形の表面積を見つける必要があります。

したがって、入力がN =3、M =3、A =[[1、4、5]、[3、3、4]、[1、3、5]]の場合、出力は72になります。

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

  • res:=0

  • 0からNの範囲のiの場合、実行

    • 0からMの範囲のjについては、次のようにします

      • up_side:=0

      • left_side:=0

      • i> 0の場合、

        • up_side:=array [i-1、j]

      • j> 0の場合、

        • left_side:=array [i、j-1]

      • res:=res + | array [i] [j] --up_side | + | array [i] [j] --left_side |

      • iがN-1と同じ場合、

        • res:=res + array [i、j]

      • jがM-1と同じ場合、

        • res:=res + array [i、j]

  • res:=res + N * M * 2

  • 解像度を返す

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

M = 3
N = 3
def get_surface_area(array):
   res = 0
   for i in range(N):
      for j in range(M):
         up_side = 0
         left_side = 0
         if (i > 0):
            up_side = array[i - 1][j]
         if (j > 0):
            left_side = array[i][j - 1]
         res += abs(array[i][j] - up_side)+abs(array[i][j] - left_side)
         if (i == N - 1):
            res += array[i][j]
         if (j == M - 1):
            res += array[i][j]
   res += N * M * 2
   return res
array = [[1, 4, 5],[3, 3, 4],[1, 3, 5]]
print(get_surface_area(array))

入力

[[1, 4, 5],[3, 3, 4],[1, 3, 5]]

出力

72

  1. 行列の転置を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 行列が与えられた場合、転置を同じ行列に格納して表示する必要があります。 行列の転置は、行を列に、列を行に変更することで得られます。つまり、A行列の転置はA[i][j]をA[j][i]に変更することで得られます。 以下に示す実装を見てみましょう- 例 N = 4 def transpose(A):    for i in range(N):       for j in range(i+1, N):     &nbs

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '