GitHub: https://github.com/PatrickBuhagiar/Sudoku-Solver
Given an initial Sudoku puzzle S0, we explore the state-space until we reach an end state Sn representing the solved puzzle. With the singleton technique, transitions between states will occur by looking up cells which only have one single candidate value.
The class Sudoku will represent the puzzle as a list of rows each containing a list of integers. Unknown cells are represented by the number 0.
class Sudoku(val grid: List[List[Int]]) { def row (row: Int): Set[Int] = ... def column(column: Int): Set[Int] = ... def block(block: Int): Set[Int] = ... }
The row, column and block functions take an index as a parameter and return the content of the row, column or block respectively.