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

Kiểm tra xem một từ có tồn tại trong lưới hay không trong Python

Giả sử, chúng ta có một lưới hoặc một ma trận các từ. Chúng ta phải kiểm tra xem một từ đã cho có xuất hiện trong lưới hay không. Từ có thể được tìm thấy theo bốn cách, theo chiều ngang trái phải và theo chiều dọc lên xuống. Nếu chúng tôi có thể tìm thấy từ, chúng tôi trả về True, ngược lại là False.

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

p g h s f
y k d g h
t k g h tôi
h n s j s
o j f g h
n r t y u

input_str ="python", 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 -

  • Xác định một hàm find_grid (). Điều này sẽ lấy ma trận, input_str, row_pos, col_pos, row_count, col_count, độ
    • nếu mức độ giống với kích thước của input_str, thì
      • trả về True
    • nếu row_pos <0 hoặc col_pos <0 hoặc row_pos> =row_count hoặc col_pos> =col_count, thì
      • trả về Sai
    • nếu ma trận [row_pos, col_pos] giống với input_str [độ], thì
      • temp:=matrix [row_pos, col_pos]
      • thay thế các phần tử của ma trận [row_pos, col_pos] bằng '#'
      • kết quả:=find_grid (ma trận, input_str, row_pos - 1, col_pos,
        • row_count, col_count, độ + 1) theo chiều dọc hoặc
        • find_grid (ma trận, input_str, row_pos + 1, col_pos, row_count,
        • col_count, độ + 1) bitwise hoặc
        • find_grid (ma trận, input_str, row_pos, col_pos - 1, row_count,
        • col_count, độ + 1) bitwise hoặc
        • find_grid (ma trận, input_str, row_pos, col_pos + 1, row_count, col_count, độ + 1))
      • thay thế các phần tử của ma trận [row_pos, col_pos] bằng temp
      • trả về kết quả
    • nếu không,
      • trả về Sai
  • Từ hàm / phương thức chính, hãy thực hiện như sau -
  • nếu độ dài của input_str> row_count * col_count, thì
    • trả về Sai
  • đối với hàng trong phạm vi 0 đến row_count, hãy thực hiện
    • đối với col trong phạm vi 0 đến col_count, thực hiện
      • nếu ma trận [row, col] giống với input_str [0], thì
        • nếu (find_grid (matrix, input_str, row, col, row_count, col_count, 0) là True), 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 find_grid(matrix, input_str, row_pos, col_pos, row_count, col_count, degree) :
   if (degree == len(input_str)) :
      return True
   if (row_pos < 0 or col_pos < 0 or row_pos >= row_count or col_pos >= col_count) :
      return Fals
   if (matrix[row_pos][col_pos] == input_str[degree]) :
      temp = matrix[row_pos][col_pos]
      matrix[row_pos].replace(matrix[row_pos][col_pos], "#")
      result = (find_grid(matrix, input_str, row_pos - 1, col_pos, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos + 1, col_pos, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos, col_pos - 1, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos, col_pos + 1, row_count, col_count, degree + 1))
      matrix[row_pos].replace(matrix[row_pos][col_pos], temp)
      return result
   else :
      return False
def solve(matrix, input_str, row_count, col_count) :
   if (len(input_str) > row_count * col_count) :
      return False
   for row in range(row_count) :
      for col in range(col_count) :
         if (matrix[row][col] == input_str[0]) :
            if (find_grid(matrix, input_str, row, col, row_count, col_count, 0)) :
               return True
   return False
word_grid = ["pghsf", "ykdgh", "tkghi", "hnsjs", "ojfgh", "nrtyu"]
print(solve(word_grid, "python", 6, 5))

Đầu vào

["pghsf", "ykdgh", "tkghi", "hnsjs", "ojfgh", "nrtyu"],"python"

Đầu ra

True