Class: SudokuSolver
- Inherits:
-
Object
- Object
- SudokuSolver
- Defined in:
- lib/sudoku_solver.rb
Instance Method Summary collapse
- #clone ⇒ Object
-
#initialize(sudoku) ⇒ SudokuSolver
constructor
A new instance of SudokuSolver.
- #solve ⇒ Object
Constructor Details
#initialize(sudoku) ⇒ SudokuSolver
Returns a new instance of SudokuSolver.
8 9 10 11 12 13 |
# File 'lib/sudoku_solver.rb', line 8 def initialize sudoku @sudoku = sudoku.clone @depth = 0 initialize_capabilities end |
Instance Method Details
#clone ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/sudoku_solver.rb', line 15 def clone solver = super solver.sudoku = @sudoku.clone solver.capabilities = Marshal.load(Marshal.dump(@capabilities)) @depth += 1 solver end |
#solve ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/sudoku_solver.rb', line 25 def solve result = SudokuResult.new @depth while (solve_method1 || solve_method2) do return result unless correct? end if @sudoku.solved? result << @sudoku else element = find_best_element_to_random_solve @capabilities[element.y][element.x].each do |random| solver = self.clone solver.set(element.x, element.y, random) result.merge solver.solve end end result end |