Practice: Word Search

Problem: https://leetcode.com/problems/word-search/

Recognition reminder: you are asked whether a word can be traced through a grid by moving to adjacent cells, never reusing a cell. “Find a path that satisfies X” on a grid is the backtracking cue. This is the same make-choice / recurse / undo skeleton as the rest of the week, but the choice is a step to a neighboring cell and the undo is restoring the cell you marked.

Before you start (the five-beat rhythm)

  1. Your Pattern Card for this week is already written.
  2. Name the pattern aloud and write your approach as a plain-English comment before any code.
  3. Struggle floor: 25 minutes unaided. No hints, no AI, no Discuss tab.
  4. If stuck past the floor, ask the tutor for a hint. Six rungs, one per ask.
  5. Debrief in your commit message before moving to the next problem.

Your target

Fill these in yourself before you look at anyone else’s solution:

Target time complexity:  ____
Target space complexity: ____

Think about two things: how you stop a single path from stepping on a cell it has already used (mark it, then unmark it on the way back), and how the search can begin from any cell on the board. Your time target should account for trying every starting cell and, from each, branching into neighbors for each letter of the word.

Where your code goes

Write your solution in your own work repo (see getting-started.md), not in this folder. This folder ships only the problem spec and a provided-example test (tests/test_provided.py) so you can check the given cases locally before you submit to LeetCode’s judge. The judge is the oracle; the tutor will not confirm your answer by reading it.

Note on the test: this problem returns a boolean, so the provided test compares with direct equality. The board is a list[list[str]]; if your approach mutates the board in place to mark visited cells, make sure you restore it, both because the skeleton requires the undo and because a caller may reuse the board.

Debrief (paste into your commit message)

1. What pattern did this turn out to be?
2. What was the trigger phrase or input shape that should have made me reach for it?
3. What was the time and space complexity, and what would dominate at scale?
4. What edge case would have broken my first attempt?
5. What would I do differently in three days when I see this cold?