Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่ามีคำอยู่ในตารางหรือไม่ใน Python


สมมติว่าเรามีตารางหรือเมทริกซ์ของคำ เราต้องตรวจสอบว่าคำที่กำหนดมีอยู่ในตารางหรือไม่ คำนี้สามารถพบได้ในสี่วิธีในแนวนอนซ้ายและขวาและแนวตั้งขึ้นและลง หากเราหาคำได้ เราก็จะคืนค่า True ไม่เช่นนั้นจะเป็น False

ดังนั้นหากอินพุตเป็นแบบ

p g h s f
k d g
t k g ฉัน
n s j s
โอ j f g h
t คุณ

input_str ="python" จากนั้นผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน find_grid() สิ่งนี้จะใช้เมทริกซ์, input_str, row_pos, col_pos, row_count, col_count, องศา
    • ถ้าระดับเท่ากับขนาดของ input_str แล้ว
      • คืนค่า True
    • ถ้า row_pos <0 หรือ col_pos <0 หรือ row_pos>=row_count หรือ col_pos>=col_count แล้ว
      • คืนค่าเท็จ
    • ถ้า matrix[row_pos, col_pos] เหมือนกับ input_str[degree] แล้ว
      • อุณหภูมิ :=matrix[row_pos, col_pos]
      • แทนที่องค์ประกอบของเมทริกซ์[row_pos, col_pos] ด้วย '#'
      • ผลลัพธ์ :=find_grid(เมทริกซ์, input_str, row_pos - 1, col_pos,
        • row_count, col_count, degree + 1) bitwise หรือ
        • find_grid(เมทริกซ์, input_str, row_pos + 1, col_pos, row_count,
        • col_count, องศา + 1) ระดับบิต หรือ
        • find_grid(เมทริกซ์, input_str, row_pos, col_pos - 1, row_count,
        • col_count, องศา + 1) ระดับบิต หรือ
        • find_grid(เมทริกซ์, input_str, row_pos, col_pos + 1, row_count, col_count, องศา + 1))
      • แทนที่องค์ประกอบของเมทริกซ์[row_pos, col_pos] ด้วยอุณหภูมิ
      • ผลตอบแทน
    • มิฉะนั้น
      • คืนค่าเท็จ
  • จากฟังก์ชัน/วิธีการหลัก ให้ทำดังนี้ −
  • ถ้าความยาวของ input_str> row_count * col_count แล้ว
    • คืนค่าเท็จ
  • สำหรับแถวในช่วง 0 ถึง row_count ให้ทำ
    • สำหรับ col ในช่วง 0 ถึง col_count ทำ
      • ถ้า matrix[row, col] เหมือนกับ input_str[0] แล้ว
        • ถ้า (find_grid(matrix, input_str, row, col, row_count, col_count, 0) เป็น True) ดังนั้น
          • คืนค่า True
  • คืนค่าเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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

อินพุต

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

ผลลัพธ์

True