# Questions

## BabySnake

## Checkpoint 1: Before training

1. How do you decide where to move in BabySnake? Explain how to choose moves
   in enough detail that someone else could follow your instructions.

2. How many distinct states are there for BabySnake? If we assume that all four 
   arrow keys are valid actions in every state, how many rows would the full Q-table contain?

3. The discount factor γ (gamma) can range from 0 to 1. What would be the effect of setting
   γ to 0? What about 1?

4. The learning rate α (alpha) can also range from 0 to 1. What would be the effect of setting
   α to 0? What about 1?

5. Calculate the new Q-value for the situation described. Explain your answer.

6. Implement `choose_action` and `update_q` in `q_learning.py`, then run

   ```
   python test_q_learning.py
   ```

   Get every test passing before moving on — errors are much easier to track
   down here than during training.


---

## Checkpoint 2: After training

Train your Q-learning agent to consistently score 3 or more food items per
episode, then watch it play:

```
python train_babysnake.py
```

**At what episode did the agent start reliably finding food?**


**Print `q_table` after training. Can you read the policy?** For a state you
pick, does the highest Q-value point toward the food?


**How does the trained agent's behavior compare to the reasoning you wrote
down in Checkpoint 1?**

