Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem tất cả các hàng của ma trận có phải là xoay tròn của nhau hay không trong Python

Giả sử, chúng ta được cung cấp một ma trận có kích thước n * n, chứa các số nguyên. Chúng ta phải tìm xem tất cả các hàng của ma trận đó có phải là phép quay tròn của hàng trước đó hay không. Trong trường hợp hàng đầu tiên, nó phải là một vòng quay của hàng thứ n.

Vì vậy, nếu đầu vào giống như

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

thì đầu ra sẽ là True.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • concat:=chuỗi trống
  • đối với tôi trong phạm vi từ 0 đến số hàng, hãy thực hiện
    • concat:=concat concatenate "-" ma trận nối [0, i]
  • concat:=concat concat concatnate concat
  • đối với tôi trong phạm vi từ 1 đến kích thước của ma trận, hãy thực hiện
    • curr_row:=chuỗi trống
    • đối với j trong phạm vi 0 đến số cột, thực hiện
      • curr_row:=curr_row concatenate "-" ma trận nối [i, j]
    • nếu curr_row có mặt trong chuỗi kết hợp, thì
      • trả về True
  • trả về Sai

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

True