A modern, interactive Sudoku terminal user interface built with Rust, featuring beautiful colorized grids, intelligent hints, and multiple difficulty levels.
- 🎨 Beautiful Terminal UI: Colorized grid with clear 3×3 block boundaries
- Rust 1.70.0 or higher
git clone https://github.com/iamdhakrey/sudoko.git
cd sudoko/sudoko-tui
cargo build --release
cargo run --release
Or run the compiled binary:
./target/release/sudoko-tui
Fill the 9×9 grid so that each row, column, and 3×3 box contains all digits from 1 to 9.
- Arrow Keys (↑↓←→
): Move cursor around the grid
1-9
): Fill the selected cell with the chosen digit0
, Delete
, Backspace
): Clear the selected cell- S
: Automatically solve the entire puzzle
R
: Reset puzzle to original stateH
: Get a hint for the current puzzle- E
: Generate new Easy puzzle
M
: Generate new Medium puzzleD
: Generate new Hard puzzleX
: Generate new Expert puzzle- ?
: Show/hide help dialog
Q
: Quit the application- 🟡 Yellow Background: Current cursor position
The Sudoku TUI is built using:
- ratatui: Modern terminal UI framework
struct SudokuApp {
puzzle: Sudoku, // Current puzzle state
cursor: (usize, usize), // Current cursor position
message: String, // Status message
is_solved: bool, // Puzzle completion status
mode: AppMode, // Current UI mode (Normal/Help)
should_quit: bool, // Exit flag
hint_tracker: Vec<(usize, usize, u8)>, // Tracks given hints
}
| Level | Empty Cells | Description | |--------|------------|---------------------------------------| | Easy | 40-45 | Good for beginners, many given numbers | | Medium | 46-51 | Moderate challenge, requires logic | | Hard | 52-57 | Challenging, advanced techniques needed | | Expert | 58+ | Very difficult, minimal given numbers |
[dependencies]
sudoko = { path = "../sudoko" } # Core Sudoku library
ratatui = "0.29" # Terminal UI framework
crossterm = "0.28" # Cross-platform terminal
anyhow = "1.0" # Error handling
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
1. Clone the repository
2. Ensure you have Rust installed
3. Run cargo test
to run the test suite
4. Run cargo run
to start the application
5. Make your changes and test thoroughly
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with the excellent ratatui library
- Language: Rust 🦀
---
Happy Sudoku solving! 🧩✨
For issues, suggestions, or contributions, please visit the GitHub repository.