Sudoku solver

Project attribution: Project done in collaboration with Vlad Pintilie and Teodor Lungu.
Source: Source code is in a private Github repository.
Short description: Brute force Sudoku solver.
Technologies: Java, Swing.
What I did: I implemented the Sudoku rules and the undo function. I contributed to the brute force algorithm.

Brute force Sudoku solver written in Java. The app can load and solve Sudoku problems. If the current position is easy enough, it can also apply reasoning to find the next move. Moreover, the app has an undo function so one can see the solution backwards. Not all Sudoku puzzles are solvable by this app.

Default view of the Java Swing app. The left panel contains the display of the Sudoku puzzle. The right panel serves as a log. The top bar serves usual functions for reading a Sudoku starting position from a file, dumping the Sudoku board to a file, clearing the Sudoku board, and solving the puzzle.
Sequence of applying reasoning by pressing Ctrl+R for an easy Sudoku puzzle. Note the log information on the right panel.
After selecting the "Solving" function, the algorithm will try and solve the puzzle. During the solving the user can see in real-time the numbers tried by the algorithm on the left panel. Note the log information on the right panel: the mode has been set to SOLVE.
When the puzzle is solved it will appear with green numbers.
The user can press Ctrl+Z to undo the last move. This is a sequence of pressing undo after a puzzle was solved by the algorithm. During a move/step multiple numbers can be deduced; these numbers are highlighted with light blue. Note the log information on the right panel.