สมมติว่าเรามีเมทริกซ์บอร์ดตัวอักษร แต่ละเซลล์เก็บตัวอักษรหนึ่งตัว เรายังมีสตริงชื่อ target เราต้องตรวจสอบว่า target สามารถหาได้ในเมทริกซ์โดยการอ่านซ้าย-ขวา หรือบน-ล่าง แบบเดี่ยวทาง (unidirectional) หรือไม่
เช่น ถ้าอินพุตเป็นเมทริกซ์:
| a | n | t | s |
| s | p | i | n |
| l | a | p | s |
"tip" ผลลัพธ์จะเป็น True เพราะคอลัมน์ที่ 3 (บนลงล่าง) สร้างคำว่า "tip"
ขั้นตอนการแก้ปัญหา
- สำหรับแต่ละแถว
iในboard:- รวมตัวอักษรใน
iเป็นคำ - ถ้า
wordอยู่ในiคืนค่าTrue
- รวมตัวอักษรใน
i := 0- ในขณะที่
i < จำนวนแถวของ board:j := รวมสตริงจากตัวอักษรคอลัมน์ที่ i ใน boardi := i + 1- ถ้า
wordอยู่ในjคืนค่าTrue
- คืนค่า
False
ตัวอย่างการใช้งาน
def solve(board, word):
for i in board:
i = "".join(i)
if word in i:
return True
i = 0
while i < len(board):
j = "".join([col[i] for col in board])
i += 1
if word in j:
return True
return False
board = [["a","n","t","s"],["s","p","i","n"],["l","a","p","s"]]
word = "tip"
print(solve(board, word))
อินพุต
[["a","n","t","s"], ["s","p","i","n"], ["l","a","p","s"]], "tip"
เอาต์พุต
True