How to search for a word in a grid of characters with Python

1 Answer

0 votes
# Use a depth‑first search (DFS) from every cell that matches the first letter,
# exploring all valid directions until the full word is matched.

def dfs(grid, r, c, word, index, visited):
    if index == len(word):
        return True

    rows = len(grid)
    cols = len(grid[0])

    if r < 0 or c < 0 or r >= rows or c >= cols:
        return False

    if visited[r][c]:
        return False

    if grid[r][c] != word[index]:
        return False

    visited[r][c] = True

    found = (
        dfs(grid, r + 1, c, word, index + 1, visited) or
        dfs(grid, r - 1, c, word, index + 1, visited) or
        dfs(grid, r, c + 1, word, index + 1, visited) or
        dfs(grid, r, c - 1, word, index + 1, visited)
    )

    visited[r][c] = False
    
    return found


def wordExist(grid, word):
    rows = len(grid)
    cols = len(grid[0])
    visited = [[False] * cols for _ in range(rows)]

    for r in range(rows):
        for c in range(cols):
            if dfs(grid, r, c, word, 0, visited):
                return True

    return False


def main():
    grid = [
        ['a', 'b', 'c', 'e'],
        ['s', 'f', 'c', 's'],
        ['a', 'd', 'e', 'e']
    ]

    word = "see"

    result = wordExist(grid, word)
    print(1 if result else 0)


if __name__ == "__main__":
    main()



'''
run:

1

'''

 



answered 3 days ago by avibootz
...