Class: NQueens::Solver
- Inherits:
-
Object
- Object
- NQueens::Solver
- Defined in:
- lib/n_queens/solver.rb
Instance Method Summary collapse
-
#initialize(n) ⇒ Solver
constructor
A new instance of Solver.
- #solve ⇒ Object
Constructor Details
#initialize(n) ⇒ Solver
Returns a new instance of Solver.
3 4 5 6 |
# File 'lib/n_queens/solver.rb', line 3 def initialize(n) @n = Integer(n) raise ArgumentError, "n must be >= 1" if @n < 1 end |
Instance Method Details
#solve ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/n_queens/solver.rb', line 8 def solve started_at = Time.now method, raw_solutions, count = if @n <= 10 solutions = NQueens::Backtracking.new(@n).solve [ :backtracking, solutions, solutions.size ] elsif @n <= 17 solutions = NQueens::ParallelBitmask.new(@n).solve [ :parallel_bitmask, solutions, solutions.size ] else parallel = NQueens::ParallelBitmask.new(@n) parallel.solve [ :parallel_bitmask, nil, parallel.count_from_files ] end NQueens::Result.new( @n, count, raw_solutions, method, Time.now - started_at ) end |