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

Pythonで島の形の周囲を見つけるプログラム


0が空のセルを示し、1が形状を形成するブロックを示すバイナリ行列があるとします。次に、形状の周囲を見つける必要があります。形状はその内部に穴を保持しません。

したがって、入力が次のような場合

0 0 0 0 0
0 0 1 1 1
0 0 1 1 0
0 1 1 1 0
0 0 0 0 0

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

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

  • d:=0

  • 周囲長:=0

  • 高さ:=行列の行数

  • 長さ:=行列の列数

  • 行列の各行について、次のようにします

    • c:=0

    • 行の各valについて、実行します

      • valが1と同じ場合、

        • サラウンド:=4

        • cが長さ-1と同じでない場合、

          • matrix [d、c + 1]が1と同じ場合、

            • サラウンド:=サラウンド-1

        • cが0と同じでない場合、

          • matrix [d、c --1]が1と同じ場合、

            • サラウンド:=サラウンド-1

        • dが高さ-1と同じでない場合、

          • matrix [d + 1、c]が1と同じ場合、

            • サラウンド:=サラウンド-1

        • dが0と同じでない場合、

          • matrix [d-1、c]が1と同じ場合、

            • サラウンド:=サラウンド-1

        • 周囲長:=周囲長+周囲長

        • c:=c + 1

    • d:=d + 1

  • 境界線を返す

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

class Solution:
   def solve(self, matrix):
      d = 0
      perimeter = 0
      height = len(matrix)
      length = len(matrix[0])
      for line in matrix:
         c = 0

         for val in line:
            if val == 1:
               surround = 4
               if c != length - 1:
                  if matrix[d][c + 1] == 1:
                     surround -= 1
               if c != 0:
                  if matrix[d][c - 1] == 1:
                     surround -= 1
               if d != height - 1:
                  if matrix[d + 1][c] == 1:
                     surround -= 1
               if d != 0:
                  if matrix[d - 1][c] == 1:
                     surround -= 1
               perimeter += surround
            c += 1
         d += 1
      return perimeter

ob = Solution()
matrix = [
   [0,0,0,0,0],
   [0,0,1,1,1],
   [0,0,1,1,0],
   [0,1,1,1,0],
   [0,0,0,0,0]
]
print(ob.solve(matrix))
>

入力

matrix = [
[0,0,0,0,0],
[0,0,1,1,1],
[0,0,1,1,0],
[0,1,1,1,0],
[0,0,0,0,0]]

出力

14

  1. Pythonプログラムで円柱の周囲を見つける

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 直径と高さを入力し、円柱の周囲長を見つけます。 周囲長は、円柱、つまり長方形の側面図に他なりません。 したがって、周囲長=2 *(h + d) ここで、dは円柱の直径です hは円柱の高さです それでは、実装を見てみましょう 例 # Function to calculate the perimeter of a cylinder def perimeter( diameter, height ) :    return 2 * ( diameter + height )

  2. 円柱の周囲を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 −直径と高さを入力し、円柱の周囲長を求めます 周囲は円柱の側面図、つまり長方形に他なりません したがって、周囲長=2 *(h + d) ここで、dは円柱の直径です hは円柱の高さです それでは、実装を見てみましょう 例 # Function to calculate the perimeter of a cylinder def perimeter( diameter, height ) :    return 2 * ( diameter + height ) # ma