Write a complete C++ terminal Snake game in this workspace. Requirements: 1. Single file `snake.cpp` (C++17 ok). Use POSIX terminal I/O: raw mode or ncurses; WASD or arrow keys; quit with `q`. 2. Features: moving snake, food, grow on eat, wall or self collision ends game, score printed, board roughly 20x20 or similar. 3. `Makefile` with target `snake` that runs `g++ -O2 -o snake snake.cpp` (link `-lncurses` only if you use ncurses). 4. After writing, run `make` to verify it compiles. Do not need an interactive play session. 5. Brief README.md with how to build and run. Use write_file / run_shell tools. Prefer implementing yourself rather than downloading.