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
 | 
			
		||||
  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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -57,6 +57,23 @@ module Sudoku
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
module Sudoku
 | 
			
		||||
  class Solver
 | 
			
		||||
 | 
			
		||||
    def self.solve(board)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue