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

Pythonで、行列のすべての行が互いに円を描くように回転しているかどうかを確認します


整数を含むサイズn*nの行列が提供されているとします。その行列のすべての行が前の行の円回転であるかどうかを確認する必要があります。最初の行の場合は、n番目の行を円で回転させる必要があります。

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

B A D C
C B A D
D C B A
A D C B

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

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

  • concat:=空白の文字列
  • 0から行数の範囲のiの場合は、
    • concat:=concat concatenate "-" concatenate matrix [0、i]
  • concat:=concat concatenate concat
  • 1から行列のサイズまでの範囲のiについては、
    • curr_row:=空白の文字列
    • 0から列数の範囲のjについては、
      • curr_row:=curr_row concatenate "-" concatenate matrix [i、j]
    • curr_rowが文字列concatに存在する場合、
      • Trueを返す
  • Falseを返す

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

def solve(matrix) :
   concat = ""
   for i in range(len(matrix)) :
      concat = concat + "-" + str(matrix[0][i])
   concat = concat + concat
   for i in range(1, len(matrix)) :
      curr_row = ""
      for j in range(len(matrix[0])) :
         curr_row = curr_row + "-" + str(matrix[i][j])
      if (concat.find(curr_row)) :
         return True
   return False
matrix = [['B', 'A', 'D', 'C'],
         ['C', 'B', 'A', 'D'],
         ['D', 'C', 'B', 'A'],
         ['A', 'D', 'C', 'B']]
print(solve(matrix))

入力

[['B', 'A', 'D', 'C'],
['C', 'B', 'A', 'D'],
['D', 'C', 'B', 'A'],
['A', 'D', 'C', 'B']]

出力

True

  1. 2つのツリーのすべてのレベルがアナグラムであるかどうかをPythonで確認します

    2つの二分木が提供されているとします。二分木の各レベルが他の二分木の同じレベルのアナグラムであるかどうかを確認する必要があります。アナグラムの場合はTrueを返し、そうでない場合はFalseを返します。 したがって、入力が次のような場合 、出力はTrueになります。 これを解決するには、次の手順に従います- tree_1は最初のツリーのルートノードであり、tree_2は2番目のツリーのルートノードです。 tree_1がnullと同じで、tree_2がnullと同じ場合、 Trueを返す tree_1がnullと同じであるか、tree_2がnullと同じである場合、 Fa

  2. 与えられた2つの行列が同一であるかどうかをチェックするPythonプログラム

    ここでは2つの行列が与えられています。両方の行列の順序は同じです。同じように2つの行列が等しくなければならず、両方の行列の行と列の数が等しく、対応する要素も等しくなければなりません。 アルゴリズム Step 1: Create two matrix. Step 2: Then traverse every element of the first matrix and second matrix and compare every element of the first matrix with the second matrix. Step 3: If the both are same