# Author: Shane Emmons
#
# Quiz 69: The Golden Fibonacci Ratio.
#
# I decided for this quiz to try and use the curses library to make
# screen placement easier. I think it turned out well, though I am sure
# there are more clever ways of achieving the same results. Press the
# 'enter' key to advance through each successive iteration of the
# algorithm. Five is the optimal number of times to iterate for
standard
# consoles.
#
# usage: ruby quiz69.rb [optional: number of times to add sqr]

require 'curses'

class Square

    attr_reader :height, :width
    attr_writer :height, :width

    def initialize( screen, length = 1, width = 1 )
        @screen, @height, @width = screen, length, width
    end

    def max_side
        @height >= @width ? @height : @width
    end

    def add_to_screen
        @screen.setpos( 0, 0 )
        ( 0 .. @width + 1 ).each { @screen.addstr( '#' ) }
        ( 1 .. @height ).each do |height|
            @screen.setpos( height, 0 )
            @screen.addstr( '#' )
            @screen.setpos( height, @width + 1 )
            @screen.addstr( '#' )
        end
        @screen.setpos( @height + 1, 0 )
        ( 0 .. @width + 1 ).each { @screen.addstr( '#' ) }
        @screen.getch
    end

end

add_to = :right
sqr = Square.new( Curses::init_screen )
sqr.add_to_screen

times = ARGV[ 0 ] || 5
( 1 .. times.to_i ).each do |x|

    if add_to == :right
        sqr.width  += sqr.max_side + 1
    else
        sqr.height += sqr.max_side + 1
    end

    add_to = add_to == :right ? :bottom : :right
    sqr.add_to_screen
    
end