From: Aaron Baldwin Date: 2008-06-17T00:34:05+09:00 Subject: Re: Circle Drawing (#166) Here is my solution. Aaron class Circle attr_accessor :radius, :aspect_ratio def initialize(radius, aspect_ratio) self.radius = radius self.aspect_ratio = aspect_ratio == 0 ? 1 : aspect_ratio end def to_s (0..y_diameter).inject('') do |rows, y| rows + (0..x_diameter).inject('') do |row, x| row + (on_circle?(x, y) ? '#' : ' ') end + "\n" end end private def y_diameter radius * 2 end def x_diameter y_diameter * aspect_ratio end def on_circle?(x,y) Math.sqrt((x/aspect_ratio-radius)**2 + (y-radius)**2).round == radius end end print Circle.new(ARGV[0].to_i, ARGV[1].to_f).to_s