class TowersOfHanoi::Move

Attributes

destination[R]
origin[R]

Public Class Methods

new(origin: nil, destination: nil) click to toggle source
# File lib/towers_of_hanoi/move.rb, line 5
def initialize(origin: nil, destination: nil)
  @origin = origin
  @destination = destination
end

Public Instance Methods

make(board) click to toggle source
# File lib/towers_of_hanoi/move.rb, line 10
def make(board)
  if valid?(board)
    board.tower(destination).add(board.tower(origin).remove)
  end

  self
end

Private Instance Methods

valid?(board) click to toggle source
# File lib/towers_of_hanoi/move.rb, line 21
def valid?(board)
  (1..3) === origin && (1..3) === destination &&
  board.tower(origin).top < board.tower(destination).top
end