Image credit: t-dillon.github.io/tdoku
This is my first ever Rust project, written completely with my own sweat and blood.
Written in pure Rust, as a way to kickstart my Rust learning journey, a milestone project that helped me understand ownership, borrowing, and lifetimes better.
After hours of arguing with the compiler and digging into the borrow checker docs, I finally managed to rewrite the Sudoku solving algorithm.
The implementation uses the classic backtracking algorithm to solve Sudoku puzzles, (labelled as LeetCode - Hard problem.)
- Optimize the algorithm:
- Use candidates instead of brute force.
- Start with cells that have the least number of candidates.
- Update candidate sets after a successful propagation.
- Dancing link algorithm.
- Constraint propagation
- Deploy this solver as a binary service. Finally,
- Generate 5M puzzles and solve them ๐ - https://norvig.com/sudoku.html
Thank you @MusabZamann for the motivation and maa, the sudoku addict, for the inspiration.