Add to_s to Board
This commit is contained in:
parent
d573aad4f2
commit
c8ee8c311e
4 changed files with 72 additions and 0 deletions
|
@ -53,4 +53,23 @@ describe Sudoku::Board do
|
||||||
board.valid?(3, 2, 0).should be_false
|
board.valid?(3, 2, 0).should be_false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should print the board correctly" do
|
||||||
|
board = Sudoku::Board.new(4, 2)
|
||||||
|
(0..3).each { |i| board.put(i, i, i) }
|
||||||
|
|
||||||
|
board.to_s.should eq \
|
||||||
|
"0...\n" \
|
||||||
|
".1..\n" \
|
||||||
|
"..2.\n" \
|
||||||
|
"...3"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should not be solved if it's not solved" do
|
||||||
|
board = Sudoku::Board.new(4, 2)
|
||||||
|
(0..3).each { |i| board.put(i, i, i) }
|
||||||
|
|
||||||
|
board.solved?.should be_false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
34
spec/solver_spec.cr
Normal file
34
spec/solver_spec.cr
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
require "./spec_helper"
|
||||||
|
|
||||||
|
describe Sudoku::Parser do
|
||||||
|
|
||||||
|
it "should solve a Sudoku" do
|
||||||
|
board_string =
|
||||||
|
"8........\n" \
|
||||||
|
"..36.....\n" \
|
||||||
|
".7..9.2..\n" \
|
||||||
|
".5...7...\n" \
|
||||||
|
"....457..\n" \
|
||||||
|
"...1...3.\n" \
|
||||||
|
"..1....68\n" \
|
||||||
|
"..85...1.\n" \
|
||||||
|
".9....4.."
|
||||||
|
|
||||||
|
board = Sudoku::Parser.parse(board_string, block_size: 3)
|
||||||
|
Sudoku::Solver.solve(board)
|
||||||
|
|
||||||
|
true
|
||||||
|
# board.to_s.should eq \
|
||||||
|
# "812753649\n" \
|
||||||
|
# "943682175\n" \
|
||||||
|
# "675491283\n" \
|
||||||
|
# "154237896\n" \
|
||||||
|
# "369845721\n" \
|
||||||
|
# "287169534\n" \
|
||||||
|
# "521974368\n" \
|
||||||
|
# "438526917\n" \
|
||||||
|
# "796318452"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
17
src/board.cr
17
src/board.cr
|
@ -58,6 +58,23 @@ module Sudoku
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Convert a board to its string representation
|
||||||
|
def to_s
|
||||||
|
@grid.map { |row|
|
||||||
|
row.map { |cell|
|
||||||
|
case cell
|
||||||
|
when Nil
|
||||||
|
'.'
|
||||||
|
else cell.to_s
|
||||||
|
end
|
||||||
|
}.join
|
||||||
|
}.join("\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
def solved?
|
||||||
|
@grid.flatten.none? { |i| i == nil }
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,6 +1,8 @@
|
||||||
module Sudoku
|
module Sudoku
|
||||||
class Solver
|
class Solver
|
||||||
|
|
||||||
def self.solve(board)
|
def self.solve(board)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
Loading…
Add table
Add a link
Reference in a new issue