Sha256: 6870b645a6ee8a1b0590ee3aecd9c3124eb79070c7c40671934b85cf13c3c493

Contents?: true

Size: 609 Bytes

Versions: 1

Compression:

Stored size: 609 Bytes

Contents

module TowersOfHanoi
  class Game
    attr_reader :board

    def initialize(bricks: 3, moves: [])
      @board = TowersOfHanoi::Board.new(bricks: bricks)
      @moves = []
      moves.each { |turn| move(from: turn[0], to: turn[1]) }
    end

    def number_of_bricks
      @board.bricks
    end

    def turns
      @moves.length
    end

    def over?
      @board.tower(3).full?
    end

    def move(from: 0, to: 0)
      new_move = TowersOfHanoi::Move.new(origin: from, destination: to)
      @moves << new_move.make(@board)
    end

    def minimum_turns
      2**number_of_bricks - 1
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
towers_of_hanoi-0.2.0 lib/towers_of_hanoi/game.rb