Class: SudokuItem

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

Instance Method Summary collapse

Constructor Details

#initialize(sudoku, value) ⇒ SudokuItem

Returns a new instance of SudokuItem.



5
6
7
8
# File 'lib/sudoku_item.rb', line 5

def initialize sudoku, value
  @sudoku = sudoku
  set value
end

Instance Method Details

#positionObject



22
23
24
25
26
# File 'lib/sudoku_item.rb', line 22

def position
  @position || @sudoku.each_with_position do |element, x, y|
    return (@position = x.to_i, y.to_i) if element == self
  end
end


28
29
30
# File 'lib/sudoku_item.rb', line 28

def related
  (related_in_box + related_vertical + related_horizontal).uniq
end


40
41
42
# File 'lib/sudoku_item.rb', line 40

def related_horizontal
  @sudoku.find_all {|item| (item.y == self.y) && (item != self)}
end


32
33
34
# File 'lib/sudoku_item.rb', line 32

def related_in_box
  @sudoku.find_all {|item| (same_box? item) && (item != self)}
end


36
37
38
# File 'lib/sudoku_item.rb', line 36

def related_vertical
  @sudoku.find_all {|item| (item.x == self.x) && (item != self)}
end

#same_box?(item) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/sudoku_item.rb', line 44

def same_box? item
  (self.x / 3) == (item.x / 3) && (self.y / 3) == (item.y / 3)
end

#set(value) ⇒ Object



18
19
20
# File 'lib/sudoku_item.rb', line 18

def set value
  @value = value.to_i.zero? ? nil : value.to_i unless set?
end

#set?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/sudoku_item.rb', line 48

def set?
  not @value.nil?
end

#to_iObject



52
53
54
# File 'lib/sudoku_item.rb', line 52

def to_i
  @value.to_i
end

#to_sObject



56
57
58
# File 'lib/sudoku_item.rb', line 56

def to_s
  set? ? @value.to_s : ' '
end

#xObject



10
11
12
# File 'lib/sudoku_item.rb', line 10

def x
  position.first
end

#yObject



14
15
16
# File 'lib/sudoku_item.rb', line 14

def y
  position.last
end