class Multiples::MultiplesEnumerator

Attributes

palindrome[R]
phase[R]

Public Class Methods

new(palindrome) click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 38
def initialize palindrome
  @base = 0
  @palindrome = palindrome
  @phase = 0
end

Public Instance Methods

current() click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 44
def current
  @base
end
each() { |base| ... } click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 53
def each
  loop do
    send :next
    yield @base
  end
end
lazy() click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 60
def lazy
  Enumerator::Lazy.new(self) do |yielder, *vals|
    yielder.<<(*vals)
  end
end
next() click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 66
def next
  @base += progress_phase
end
prev() click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 70
def prev
  @base -= regress_phase
end
reset!() click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 48
def reset!
  @base = 0
  @phase = 0
end

Private Instance Methods

progress_phase() click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 75
def progress_phase
  val = @palindrome[@phase]
  @phase += 1
  @phase = 0 if @phase > @palindrome.length - 1
  val
end
regress_phase() click to toggle source
# File lib/multiples/multiples_enumerator.rb, line 82
def regress_phase
  @phase -= 1
  @phase = @palindrome.length - 1 if @phase < 0
  @palindrome[@phase]
end