Class: Kudosu::Board

Inherits:
Object
  • Object
show all
Defined in:
lib/kudosu/board.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#cellsObject

Returns the value of attribute cells.



3
4
5
# File 'lib/kudosu/board.rb', line 3

def cells
  @cells
end

Instance Method Details

#boxesObject



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

#columnsObject



27
28
29
# File 'lib/kudosu/board.rb', line 27

def columns
  rows.transpose
end


19
20
21
# File 'lib/kudosu/board.rb', line 19

def print
  Printer.new(self).print
end

#rowsObject



23
24
25
# File 'lib/kudosu/board.rb', line 23

def rows
  cells.each_slice(9).to_a
end

#shuffleObject



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

#solveObject



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

#valuesObject



15
16
17
# File 'lib/kudosu/board.rb', line 15

def values
  cells.map(&:value)
end