class WordSearch::PositionWord::Base
Attributes
coordinate[RW]
direction[RW]
plane[RW]
positions[RW]
word[RW]
Public Class Methods
new(plane, word, direction, coordinate)
click to toggle source
# File lib/word_search/position_word/base.rb, line 8 def initialize(plane, word, direction, coordinate) @plane = plane @word = word @direction = direction @coordinate = coordinate @positions = {} end
Public Instance Methods
document_position()
click to toggle source
# File lib/word_search/position_word/base.rb, line 52 def document_position raise NotImplementedError end
last_coordinates_in_plane?()
click to toggle source
# File lib/word_search/position_word/base.rb, line 44 def last_coordinates_in_plane? raise NotImplementedError end
letter_at()
click to toggle source
# File lib/word_search/position_word/base.rb, line 48 def letter_at raise NotImplementedError end
perform()
click to toggle source
# File lib/word_search/position_word/base.rb, line 16 def perform return false unless valid? letters.each_with_index do |letter, index| place_letter(letter) document_position(letter, index) update_coordinates end positions end
place_letter()
click to toggle source
# File lib/word_search/position_word/base.rb, line 32 def place_letter raise NotImplementedError end
positive_last_coordinates?()
click to toggle source
# File lib/word_search/position_word/base.rb, line 40 def positive_last_coordinates? raise NotImplementedError end
update_coordinates()
click to toggle source
# File lib/word_search/position_word/base.rb, line 36 def update_coordinates raise NotImplementedError end
valid?()
click to toggle source
# File lib/word_search/position_word/base.rb, line 28 def valid? valid_coordinates? && valid_letters? end
Private Instance Methods
last_x()
click to toggle source
# File lib/word_search/position_word/base.rb, line 58 def last_x return @last_x if defined? @last_x @last_x = coordinate.x (word.length - 1).times do @last_x += direction.x end @last_x end
last_y()
click to toggle source
# File lib/word_search/position_word/base.rb, line 69 def last_y return @last_y if defined? @last_y @last_y = coordinate.y (word.length - 1).times do @last_y += direction.y end @last_y end
last_z()
click to toggle source
# File lib/word_search/position_word/base.rb, line 80 def last_z return @last_z if defined? @last_z @last_z = coordinate.z (word.length - 1).times do @last_z += direction.z end @last_z end
letters()
click to toggle source
# File lib/word_search/position_word/base.rb, line 111 def letters @letters ||= word.split("") end
valid_coordinates?()
click to toggle source
# File lib/word_search/position_word/base.rb, line 91 def valid_coordinates? positive_last_coordinates? && last_coordinates_in_plane? end
valid_letters?()
click to toggle source
# File lib/word_search/position_word/base.rb, line 95 def valid_letters? bad_overlap, intersection_points = false, 0 letters.count.times do |position| next if letter_at(position).blank? if letters[position] == letter_at(position) intersection_points += 1 else bad_overlap = true end end !bad_overlap && intersection_points < 2 end
x_at(position)
click to toggle source
# File lib/word_search/position_word/base.rb, line 115 def x_at(position) coordinate.x + position * direction.x end
y_at(position)
click to toggle source
# File lib/word_search/position_word/base.rb, line 119 def y_at(position) coordinate.y + position * direction.y end
z_at(position)
click to toggle source
# File lib/word_search/position_word/base.rb, line 123 def z_at(position) coordinate.z + position * direction.z end