Class: Kudosu::Board
- Inherits:
-
Object
- Object
- Kudosu::Board
- Defined in:
- lib/kudosu/board.rb
Instance Attribute Summary collapse
-
#cells ⇒ Object
Returns the value of attribute cells.
Instance Method Summary collapse
- #boxes ⇒ Object
- #columns ⇒ Object
-
#initialize(ary) ⇒ Board
constructor
A new instance of Board.
- #print ⇒ Object
- #rows ⇒ Object
- #shuffle ⇒ Object
- #solve ⇒ Object
- #solved? ⇒ Boolean
- #valid? ⇒ Boolean
- #values ⇒ Object
Constructor Details
#initialize(ary) ⇒ Board
5 6 7 |
# File 'lib/kudosu/board.rb', line 5 def initialize(ary) self.cells = ary.flatten.map { |val| Cell.new(val) } end |
Instance Attribute Details
#cells ⇒ Object
Returns the value of attribute cells.
3 4 5 |
# File 'lib/kudosu/board.rb', line 3 def cells @cells end |
Instance Method Details
#boxes ⇒ Object
31 32 33 34 |
# File 'lib/kudosu/board.rb', line 31 def boxes sliced_cols = rows.map { |row| row.each_slice(3).to_a }.transpose sliced_cols.flatten.each_slice(9).to_a end |
#columns ⇒ Object
27 28 29 |
# File 'lib/kudosu/board.rb', line 27 def columns rows.transpose end |
#print ⇒ Object
19 20 21 |
# File 'lib/kudosu/board.rb', line 19 def print Printer.new(self).print end |
#rows ⇒ Object
23 24 25 |
# File 'lib/kudosu/board.rb', line 23 def rows cells.each_slice(9).to_a end |
#shuffle ⇒ Object
36 37 38 39 |
# File 'lib/kudosu/board.rb', line 36 def shuffle boxes.each { |box| box.shuffle.take(rand(5..7)).each(&:reset) } self end |
#solve ⇒ Object
9 10 11 12 13 |
# File 'lib/kudosu/board.rb', line 9 def solve board = attempt_solution || fork_board(values) until board self.cells = board.cells self end |
#solved? ⇒ Boolean
41 42 43 |
# File 'lib/kudosu/board.rb', line 41 def solved? cells.all?(&:solved?) end |
#valid? ⇒ Boolean
45 46 47 |
# File 'lib/kudosu/board.rb', line 45 def valid? MarkupRangeUtils.ranges_valid?(markup_ranges) end |
#values ⇒ Object
15 16 17 |
# File 'lib/kudosu/board.rb', line 15 def values cells.map(&:value) end |