[#289458] Parsing JSON (#155) — Ruby Quiz <james@...>

The three rules of Ruby Quiz:

86 messages 2008/02/01
[#289675] Re: [QUIZ] Parsing JSON (#155) — steve <oksteev@...> 2008/02/03

Hey guys

[#289709] Re: [QUIZ] Parsing JSON (#155) — "Eric Mahurin" <eric.mahurin@...> 2008/02/04

On Feb 3, 2008 8:14 AM, steve <oksteev@yahoo.com> wrote:

[#289712] Re: [QUIZ] Parsing JSON (#155) — Clifford Heath <no@...> 2008/02/04

Eric Mahurin wrote:

[#289715] Re: [QUIZ] Parsing JSON (#155) — "Eric Mahurin" <eric.mahurin@...> 2008/02/04

On Feb 3, 2008 6:25 PM, Clifford Heath <no@spam.please.net> wrote:

[#289718] Re: [QUIZ] Parsing JSON (#155) — Clifford Heath <no@...> 2008/02/04

Eric Mahurin wrote:

[#289722] Re: [QUIZ] Parsing JSON (#155) — "Eric Mahurin" <eric.mahurin@...> 2008/02/04

On Feb 3, 2008 6:39 PM, Clifford Heath <no@spam.please.net> wrote:

[#289557] Comparing Active Record VS Datamapper...? — Softmind Technology <softmindtechnology@...>

Hello,

15 messages 2008/02/02
[#289633] Re: Comparing Active Record VS Datamapper...? — Ilan Berci <coder68@...> 2008/02/02

Softmind Technology wrote:

[#289636] Re: Comparing Active Record VS Datamapper...? — "s.ross" <cwdinfo@...> 2008/02/03

On 2/2/08 3:56 PM, "Ilan Berci" <coder68@yahoo.com> wrote:

[#289572] Extracting vowels and consonants using regular expression — Dondi <Donovan.Dillon@...>

I am trying to parse a string and extract all vowels and consonants

10 messages 2008/02/02

[#289579] FastRI 0.3.1: faster, Leopard compatibility, etc. — Mauricio Fernandez <mfp@...>

FastRI is an alternative to the ri documentation browser for Ruby.

21 messages 2008/02/02
[#289683] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — botp <botpena@...> 2008/02/03

On Feb 3, 2008 1:07 AM, Mauricio Fernandez <mfp@acm.org> wrote:

[#290164] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — Eric Hodel <drbrain@...7.net> 2008/02/06

On Feb 3, 2008, at 07:40 AM, botp wrote:

[#291478] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — Mauricio Fernandez <mfp@...> 2008/02/18

On Thu, Feb 07, 2008 at 07:52:20AM +0900, Eric Hodel wrote:

[#291493] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — James Gray <james@...> 2008/02/18

On Feb 18, 2008, at 5:53 AM, Mauricio Fernandez wrote:

[#289674] Ruby for game programming — t3chn0n3rd <darrin_allen@...>

Is anyone using Ruby for game programming?

17 messages 2008/02/03

[#289859] how to say # in ruby — Dan Ford <wade@...>

I'm accustomed to usenet as opposed to whatever this is.

22 messages 2008/02/04

[#289900] Introducing Waves - Web App Framework — Dan Yoder <dan@...>

I am pleased to announce the first beta release of Waves, an open-

32 messages 2008/02/05
[#290017] Re: [ANN] Introducing Waves - Web App Framework — Daniel DeLorme <dan-ml@...42.com> 2008/02/06

Dan Yoder wrote:

[#290001] Computer Science Problems — markonlinux@...

Hi all,

33 messages 2008/02/05

[#290020] Ruby type-safe? Ruby strongly/weakly typed? Ruby pitfalls? — "rule.rule.rule@..." <rule.rule.rule@...>

Hi,

36 messages 2008/02/06

[#290022] simple ruby proxy server? — Dt Town <dtown22@...>

I am trying to right at application which will simply record the headers

13 messages 2008/02/06

[#290167] Array Practice — Adam Akhtar <adamtemporary@...>

As some of you may know from previous threads im trying to practice

27 messages 2008/02/06

[#290195] info on block arguments — Russell Me <russ@...>

I'm trying to pick up ruby and I'm impressed by all the cool stuff it

24 messages 2008/02/07

[#290208] idiom I've not seen before — Rob Saul <wyrd@...>

12 messages 2008/02/07

[#290244] Parsing JSON (#155) — Ruby Quiz <james@...>

We saw a large variety of solutions for this week's problem. Many of them used

13 messages 2008/02/07

[#290245] using net::ssh shell to sudo to another user and execute commands — "wbsurfver@..." <wbsurfver@...>

11 messages 2008/02/07

[#290272] is lots of files with Threads faster? — Chris Richards <evilgeenius@...>

Im required to open 50+ files and parse the data in them. WOuld using

11 messages 2008/02/07

[#290296] BigDecimal.new('15.25') == 15.25, false ?? — Henry Jones <mathieu.houle@...>

Hi,

14 messages 2008/02/07

[#290328] trouble with FileUtils.rm() -- Invalid arguement error — an an <dtown22@...>

I have been screwing with this for the last hour, and I still cant get

12 messages 2008/02/08

[#290374] Internal Rate of Return (#156) — Ruby Quiz <james@...>

The three rules of Ruby Quiz:

47 messages 2008/02/08

[#290483] Beginner help - txt dungeon — Jonathon Hartoon <ezrickknight@...>

Hi. I have tried to learn other programming languages before and ruby

20 messages 2008/02/09

[#290716] non case sensitive searching — Adam Akhtar <adamtemporary@...>

If i want to see if a list contains a particular word how would i go

15 messages 2008/02/11

[#290735] Rev/actor TCP monkey patching — fedzor <fedzor@...>

Short and sweet -

13 messages 2008/02/11

[#290825] How do C programmers do unit testing? — "M. Edward (Ed) Borasky" <znmeb@...>

This may seem like a silly question, but how do C programmers (assume

13 messages 2008/02/12

[#290931] Robert's Ruby Riddle: Local or Method — "Robert Dober" <robert.dober@...>

Hi list I was just thinking it might fun to present some of Ruby's

10 messages 2008/02/13

[#290982] ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...>

I recently upgraded to ruby 1.8.6 on mac os x 10.4.7. I had ruby tk

47 messages 2008/02/13
[#290994] Re: ruby tk -- how do you get it working? — Jeremy Henty <onepoint@...> 2008/02/13

On 2008-02-13, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

[#291001] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/14

Jeremy Henty wrote:

[#291006] Re: ruby tk -- how do you get it working? — Hidetoshi NAGAI <nagai@...> 2008/02/14

From: 7stud -- <bbxx789_05ss@yahoo.com>

[#291014] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/14

Hidetoshi NAGAI wrote:

[#291447] Re: ruby tk -- how do you get it working? — Hidetoshi NAGAI <nagai@...> 2008/02/18

From: 7stud -- <bbxx789_05ss@yahoo.com>

[#291459] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/18

Hidetoshi NAGAI wrote:

[#291519] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/18

On Feb 18, 2008, at 2:52 AM, 7stud -- wrote:

[#291529] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/18

Morton Goldberg wrote:

[#291556] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/19

On Feb 18, 2008, at 3:05 PM, 7stud -- wrote:

[#291567] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/19

Morton Goldberg wrote:

[#291601] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/19

On Feb 18, 2008, at 10:28 PM, 7stud -- wrote:

[#291603] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/19

Morton Goldberg wrote:

[#291621] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/19

On Feb 19, 2008, at 7:05 AM, 7stud -- wrote:

[#291626] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/19

Morton Goldberg wrote:

[#291637] Re: ruby tk -- how do you get it working? — John Joyce <dangerwillrobinsondanger@...> 2008/02/19

[#291707] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/20

John Joyce wrote:

[#291742] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/20

On Feb 19, 2008, at 7:41 PM, 7stud -- wrote:

[#291747] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/20

Morton Goldberg wrote:

[#291819] Re: ruby tk -- how do you get it working? — "Leslie Viljoen" <leslieviljoen@...> 2008/02/20

On Feb 20, 2008 8:59 AM, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

[#291846] Re: ruby tk -- how do you get it working? — John Joyce <dangerwillrobinsondanger@...> 2008/02/20

[#291967] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/21

John Joyce wrote:

[#292774] Re: ruby tk -- how do you get it working? — Tim Ferrell <s0nspark@...> 2008/02/27

7stud -- wrote:

[#292964] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/29

Tim Ferrell wrote:

[#292971] Re: ruby tk -- how do you get it working? — Tim Ferrell <s0nspark@...> 2008/02/29

7stud -- wrote:

[#292992] Re: ruby tk -- how do you get it working? — Tim Ferrell <s0nspark@...> 2008/02/29

Tim Ferrell wrote:

[#290985] my noob "numbering lines" programe. How to improve? — Adam Akhtar <adamtemporary@...>

Give us hints on how to improve this program. If you want to show your

11 messages 2008/02/13

[#291013] Memcached: Dealing with unknown keys — Tony Garcia <tony23@...>

I was wondering if there is a way to handle reading keys when you don't

14 messages 2008/02/14

[#291039] Internal Rate of Return (#156) — Ruby Quiz <james@...>

Solving the IRR equation is essentially a matter of computational guesswork.

15 messages 2008/02/14

[#291084] object specific methods and id — UpsNDowns <tnospamhomas@...>

Hi,

24 messages 2008/02/14
[#291088] Re: object specific methods and id — 7stud -- <bbxx789_05ss@...> 2008/02/14

UpsNDowns wrote:

[#291089] Re: object specific methods and id — Gary Wright <gwtmp01@...> 2008/02/14

[#291184] Re: object specific methods and id — UpsNDowns <tnospamhomas@...> 2008/02/15

Thanks for the reply.

[#291261] Re: object specific methods and id — Gary Wright <gwtmp01@...> 2008/02/16

[#291302] Re: object specific methods and id — UpsNDowns <tnospamhomas@...> 2008/02/16

Gary Wright wrote:

[#291141] The Smallest Circle (#157) — Matthew D Moss <matthew.moss@...>

The three rules of Ruby Quiz 2:

61 messages 2008/02/15

[#291192] Proper way to RDoc markup? — Serg Koren <skoren@...>

Hi,

12 messages 2008/02/15

[#291269] Alter String base class to perform new (private methods) before returning itself when called by print statements — "Steven G. Harms" <steven.harms@...>

class String

8 messages 2008/02/16

[#291280] GC error ? — Piotr Sawicki <piotr.sawicki@...>

Run this program and observe memory usage.

26 messages 2008/02/16
[#291584] Re: GC error ? — "evanwebb@..." <evanwebb@...> 2008/02/19

On Feb 16, 4:12=A0am, Piotr Sawicki <piotr.sawi...@gmail.com> wrote:

[#291281] TRAC - Trac, Project Leads, Python, and Mr. Noah Kantrowitz (sanitizer) — Ilias Lazaridis <ilias@...>

Essence:

14 messages 2008/02/16

[#291354] Slide Show v0.1 - A Free Web Alternative to PowerPoint and KeyNote in Ruby Now Live — "Gerald Bauer" <geraldbauer2007@...>

Hello,

12 messages 2008/02/17

[#291381] displaying user inputed arrays — Isaac Toothyxdip <toothyxdip@...>

[code]

36 messages 2008/02/17
[#291405] Re: displaying user inputed arrays — Wally T Terrible <wally.terrible@...> 2008/02/17

I'm not entirely sure what you intend to do. If you wanted to get five

[#291424] Re: displaying user inputed arrays — Siep Korteling <s.korteling@...> 2008/02/17

Wally T Terrible wrote:

[#291858] Re: displaying user inputed arrays — "Todd Benson" <caduceass@...> 2008/02/20

On Feb 17, 2008 9:18 AM, Isaac Toothyxdip <toothyxdip@gmail.com> wrote:

[#291877] Re: displaying user inputed arrays — "Todd Benson" <caduceass@...> 2008/02/20

On Wed, Feb 20, 2008 at 1:30 PM, Todd Benson <caduceass@gmail.com> wrote:

[#291884] Re: displaying user inputed arrays — Isaac Toothyxdip <toothyxdip@...> 2008/02/20

Thanks that works!

[#291887] Re: displaying user inputed arrays — Isaac Toothyxdip <toothyxdip@...> 2008/02/20

Isaac Toothyxdip wrote:

[#291899] Re: displaying user inputed arrays — "Todd Benson" <caduceass@...> 2008/02/20

On Wed, Feb 20, 2008 at 3:56 PM, Isaac Toothyxdip <toothyxdip@gmail.com> wrote:

[#291515] Connecting to HyperTerminal — Active View <active.view@...>

Hi all...

16 messages 2008/02/18
[#291525] Re: Connecting to HyperTerminal — Ben Bleything <ben@...> 2008/02/18

On Tue, Feb 19, 2008, Active View wrote:

[#291630] Object#freeze as a basis for caching of method results? — "Shot (Piotr Szotkowski)" <shot@...>

Hello, ruby-talk.

12 messages 2008/02/19

[#291664] ||= [] idiom — "Leslie Viljoen" <leslieviljoen@...>

I often make use of this idiom to add something to an array in a hash of arrays:

24 messages 2008/02/19

[#291677] Is there any object-oriented File class in ruby ? — tom_33 <tomjbr.56770318@...>

I am very new to Ruby and my question is about trying to understand

22 messages 2008/02/19

[#291682] HELP: Need to continue the loop after the exception — mirth <mirthcyy@...>

hi guys,

12 messages 2008/02/19

[#291717] IP Address to Decimal - is an one-liner possible? — "Tiago Pinto" <thpinto@...>

Hi guys,

22 messages 2008/02/20

[#291774] What does *args do? — Stedwick <philip.brocoum@...>

I sometimes see funcs declared with def fun (blah, *args)

14 messages 2008/02/20

[#291853] 32bit vs 64bit vs UML performance — Lionel Bouton <lionel-subscription@...>

I've run the QUIZ benchmark on several systems to check their relative

17 messages 2008/02/20

[#291990] beginner's problem with sqlite3 — Tom Cloyd <tomcloyd@...>

It would be helpful if the sqlite3-ruby documentation offered one or two

15 messages 2008/02/21

[#292056] Where does instance_eval _magically_ set the variable to? — Andrew Chen <hangfei@...>

Hi,

13 messages 2008/02/21

[#292080] Newbie Mem Leak Issue — Keith Barr <keith.barr@...>

I am fairly new to Ruby and a program that I have created seems to have

14 messages 2008/02/21

[#292186] gsub("\\", "\\\\") seems unintuitive — John Woods <jqwoods@...>

The following confusing behavior is noted in the pickaxe book (2nd ed)

11 messages 2008/02/22

[#292250] ANN: Teach yourself Ruby - the hard way! — "Martin DeMello" <martindemello@...>

A frequent question from Ruby newcomers is "Okay, I've read the

12 messages 2008/02/23

[#292269] Monkeypatching is Destroying Ruby — "Avdi Grimm" <avdi@...>

Hi folks,

118 messages 2008/02/23
[#292274] Re: Monkeypatching is Destroying Ruby — "Eric Mahurin" <eric.mahurin@...> 2008/02/23

On Sat, Feb 23, 2008 at 3:07 PM, Avdi Grimm <avdi@avdi.org> wrote:

[#292385] Re: Monkeypatching is Destroying Ruby — James Gray <james@...> 2008/02/25

On Feb 23, 2008, at 4:23 PM, Eric Mahurin wrote:

[#292281] Re: Monkeypatching is Destroying Ruby — "M. Edward (Ed) Borasky" <znmeb@...> 2008/02/23

Avdi Grimm wrote:

[#292514] Re: Monkeypatching is Destroying Ruby — "Michal Suchanek" <hramrach@...> 2008/02/25

On 24/02/2008, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

[#292584] Re: Monkeypatching is Destroying Ruby — "Jones, Brian - McClatchy Interactive" <bjones@...> 2008/02/26

I'd be at least a little interested in potentially offering developers

[#292594] Re: Monkeypatching is Destroying Ruby — Trans <transfire@...> 2008/02/26

[#292601] Re: Monkeypatching is Destroying Ruby — James Britt <james.britt@...> 2008/02/26

Trans wrote:

[#292603] Re: Monkeypatching is Destroying Ruby — "Avdi Grimm" <avdi@...> 2008/02/26

On Tue, Feb 26, 2008 at 1:25 PM, James Britt <james.britt@gmail.com> wrote:

[#292362] Re: Monkeypatching is Destroying Ruby — furtive.clown@... 2008/02/24

[#292366] Re: Monkeypatching is Destroying Ruby — Gary Wright <gwtmp01@...> 2008/02/24

[#292961] Re: Monkeypatching is Destroying Ruby — Trans <transfire@...> 2008/02/29

[#292978] Re: Monkeypatching is Destroying Ruby — "Eric Mahurin" <eric.mahurin@...> 2008/02/29

On Fri, Feb 29, 2008 at 6:20 AM, Trans <transfire@gmail.com> wrote:

[#292368] Suprising behaviour with "def property=" method — "Farrel Lifson" <farrel.lifson@...>

I had a bit of a surprise with the following

14 messages 2008/02/24

[#292394] NoMethodError: private method `to_date' — Sukeerthi Adiga <sukeerthiadiga@...>

Loading development environment.

12 messages 2008/02/25

[#292398] Thread#raise, Thread#kill, and timeout.rb are unsafe — Charles Oliver Nutter <charles.nutter@...>

I wrote up an article on Thread#raise, Thread#kill, and timeout.rb that

58 messages 2008/02/25
[#294446] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/13

Hi,

[#294479] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Paul Brannan <pbrannan@...> 2008/03/13

On Fri, Mar 14, 2008 at 01:02:52AM +0900, Yukihiro Matsumoto wrote:

[#294491] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/13

Hi,

[#294551] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Paul Brannan <pbrannan@...> 2008/03/14

On Fri, Mar 14, 2008 at 07:43:28AM +0900, Yukihiro Matsumoto wrote:

[#294559] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/14

Hi,

[#294591] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Tanaka Akira <akr@...> 2008/03/14

In article <E1JaB7P-0000Zc-QP@x61.netlab.jp>,

[#294639] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/15

Hi,

[#294917] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Tanaka Akira <akr@...> 2008/03/18

In article <E1JaM9H-0000jj-AB@x61.netlab.jp>,

[#295093] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Paul Brannan <pbrannan@...> 2008/03/19

On Tue, Mar 18, 2008 at 02:04:40PM +0900, Tanaka Akira wrote:

[#292540] Math problem — grandmabeckie@...

I am try to help my daughter:

25 messages 2008/02/26

[#292704] Getting number of days in a month — Shandy Nantz <shandybleu@...>

This is probably an easy question but I am trying to get at the number

26 messages 2008/02/27

[#292781] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...>

Hi,

16 messages 2008/02/28

[#292795] Need a regex searching html code — Chirantan <chirantan.rajhans@...>

I have an html code into string. I want to retrieve the content (Can

18 messages 2008/02/28

[#292816] proc.new and return — S2 <email@...>

I am sure this is a really easy question for most of you, but i was not

15 messages 2008/02/28

[#292839] Proposed Solutions - Was [ Re: Monkeypatching is Destroying Ruby ] — hemant <gethemant@...>

On Tue, Feb 26, 2008 at 11:55 PM, James Britt <james.britt@gmail.com> wrote:

17 messages 2008/02/28

[#292860] Named sprintf parameters — Trans <transfire@...>

I have a question and perhaps a bit of challenge for those with mad

15 messages 2008/02/28

[#292865] constants defined in Kernel are also defined in Object? — Paul Brannan <pbrannan@...>

This seems peculiar to me:

15 messages 2008/02/28

[#293044] making a monthly calendar... — Mikkel Bruun <mikkel@...>

Hey

25 messages 2008/02/29
[#293088] Re: making a monthly calendar... — "Todd Benson" <caduceass@...> 2008/03/01

On Fri, Feb 29, 2008 at 4:30 PM, Mikkel Bruun <mikkel@helenius.dk> wrote:

[#293090] Re: making a monthly calendar... — Mikkel Bruun <mikkel@...> 2008/03/01

Todd Benson wrote:

[#293092] Re: making a monthly calendar... — "Todd Benson" <caduceass@...> 2008/03/01

On Sat, Mar 1, 2008 at 2:34 AM, Mikkel Bruun <mikkel@helenius.dk> wrote:

[#293223] Re: making a monthly calendar... — "Todd Benson" <caduceass@...> 2008/03/03

Oh my goodness! A thousand apologies. I gave you a rotating month. See below.

[#293264] Re: making a monthly calendar... — Mikkel Bruun <mikkel@...> 2008/03/03

So I ended up with:

Re: The Smallest Circle (#157)

From: "Rick DeNatale" <rick.denatale@...>
Date: 2008-02-20 19:10:50 UTC
List: ruby-talk #291855
Here's my solution.

I also eschewed doing any google research and started from scratch.  I
think I've taken a slightly different approach than any already
described.

The basic approach is to start with a circle containing only the first
point, and then add the points one by one changing the circle as
necessary.  So

First point
   Set center to the point and radius to zero.

Subsequent points.
   If the point is already in the circle then the point is simply
added to the collection of points and the circle is unchanged.  The
point is in the circle if the distance from the center of the circle
is less than the radius (within some epsilon to deal with floating
point comparisons).

  If the point is further from the center than the radius, the we know
that it must lie on the circumference of the new circle which will
contain all of the points examined thus far.  We now find the set of
points which are furthest from the new point (again within some
epsilon).  There will of course be one or more of these points.

  Now the center of the new circle is the average of those furthest
points plus the new points, and the radius is the distance between the
center and the new point.

The code is in several files:

==== lib/circle.rb =====
class Circle < Struct.new(:center, :radius)
  def to_s
    "{center:#{center}, radius:#{radius}}"
  end
end

==== lib/point.rb =====
class Point < Struct.new(:x, :y)

  def self.random
    new(rand, rand)
  end

  def to_s
    "Point(#{x}, #{y})"
  end

  def inspect
    to_s
  end

  def -(aPoint)
    Point.new(x - aPoint.x, y - aPoint.y)
  end

  def dist_squared(other_point)
    diff = self - other_point
    diff.x * diff.x + diff.y * diff.y
  end

  def dist(other_point)
    Math.sqrt(dist_squared(other_point))
  end

  def ==(other_point)
    x = other_point.x && y == other_point.y
  end

  def center(other_point)
    Point.new((x + other_point.x)/2, (y + other_point.y)/2)
  end

end

==== lib/point_collection.rb ====
require File.dirname(__FILE__) + '/point'
require File.dirname(__FILE__) + '/circle'

class PointCollection
  attr_reader :radius, :center

  def initialize
    @points = []
    @radius = 0
  end

  def circle
    Circle.new(center, radius)
  end

  def add_point(a_point)
    @points << a_point
    recalc_after_adding(a_point)
  end

  def empty?
    @points.empty?
  end

  private
  # Recalculate the center and radius if a point has been added.
  # If the new point is within the current circle then no change
  # is needed.
  # If it isn't then, it must be on the circumference of the new circle
  # In this case find the point or points furthest from the new point,
  # The new center will be the center of the new point plus these far points
  # The new radius will be the distance of the new point from the new center.
  def recalc_after_adding(a_point)
    if @center
      if a_point.dist_squared(center) > @radius * @radius
        circ_points = (farthest_from(a_point) + [a_point]).uniq
        @center = center_of(circ_points)
        @radius = @center.dist(a_point)
      end
    else
      @center = a_point
    end
  end

  # Given an array of points find the center.
  def center_of(an_array_of_points)
    x_sum = y_sum = 0.0
    an_array_of_points.each do |point|
        x_sum += point.x
        y_sum += point.y
    end
    Point.new(x_sum / an_array_of_points.length, y_sum /
an_array_of_points.length)
  end

  def farthest_from(a_point)
    max_dist_squared = 0.0
    delta = 0.000001
    farthest = []
    p @points
    @points.each do |point|
      dist_squared = point.dist_squared(a_point)
      diff = dist_squared - max_dist_squared
      if diff.abs <= delta
        max_dist_squared = dist_squared if diff > 0
        farthest << point
      elsif diff > delta
        max_dist_squared = dist_squared
        farthest = [ point ]
      end
    end
    farthest
  end
end

==== spec/point_spec.rb
require File.dirname(__FILE__) + '/../lib/point'

def reflect(point)
  Point.new(-point.x, -point.y)
end

describe Point, "(4, 5)" do

  before(:each) do
    @point = Point.new(4, 5)
  end

  it "should have a dist_squared of 25.0 from point(1, 1)" do
    @point.dist_squared(Point.new(1,1)).should == 25.0
  end

  it "should have a dist of 5 from point(1,1)" do
    @point.dist(Point.new(1,1)).should be_close(5.0, 0.0000001)

  end

  it "should equal a new point with the same coordinates" do
    @point.should == Point.new(4, 5)
  end

  it "should be its own center when paired with self" do
    @point.center(@point).should == @point
  end

  it "should have a center of zero when paired with its reflection" do
    @point.center(reflect(@point)).should == Point.new(0,0)
  end
end

==== spec/point_collection_spec.rb =====
require File.dirname(__FILE__) + '/../lib/point'
require File.dirname(__FILE__) + '/../lib/point_collection'

describe PointCollection do
  before(:each) do
    @pc = PointCollection.new
  end

  it "should be empty initially" do
    @pc.should be_empty
  end

  it "should should have a radius of zero" do
    @pc.radius.should == 0
  end

  it "should not have a center" do
    @pc.center.should == nil
  end

  describe PointCollection, "with one point" do
    before(:each) do
      @first_point = Point.new(1,1)
      @pc.add_point(@first_point)
    end

    it "should not be empty" do
      @pc.should_not be_empty
    end

    it "should have the first point as the center" do
      @pc.center.should == @first_point
    end
  end

  describe PointCollection, "with two points" do
    before(:each) do
      @first_point = Point.new(1,1)
      @pc.add_point(@first_point)
      @second_point = Point.new(5, 5)
      @pc.add_point(@second_point)
    end

    it "should have the center of the two points as its center" do
      @pc.center.should == @first_point.center(@second_point)
    end

    it "should have a radius half the distance between the two points" do
      @pc.radius.should be_close(@first_point.dist(@second_point) / 2.0, 0.001)
    end

    describe PointCollection, "adding a point inside" do

      before(:each) do
        @old_center, @old_radius = @pc.center, @pc.radius
        @pc.add_point(Point.new(4,4))
      end

      it "should have the same radius as before" do
        @pc.radius.should == @old_radius
      end

      it "should have the same center as before" do
        @pc.center.should == @old_center
      end
    end

    describe PointCollection, "adding a point ouside" do
      before(:each) do
        @old_center, @old_radius = @pc.center, @pc.radius
        @third_point = Point.new(6,6)
        @pc.add_point(@third_point)
      end

      it "should calculate the radius correctly" do
        @pc.radius.should
be_close(@first_point.dist(@third_point)/2.0, 0.0001)
      end
    end
  end
end
==============

This much was done about 5 days ago,  I've spent time sporadically
since then getting rmagick working with X11 on OS X Leopard so that I
could visually convince myself that this was working.

Here's the final piece, with the visualization code adapted from
someone elses submission (sorry but I can't seem to find it).

==== lib/main.rb =====
#! /usr/bin/env ruby

require 'rubygems'
require File.dirname(__FILE__) + '/point'
require File.dirname(__FILE__) + '/circle'
require File.dirname(__FILE__) + '/point_collection'

def generate_samples(n)
  (1..n).map { Point.random }
end

def encircle(points)
  point_collection = PointCollection.new
  points.each do |point|
    point_collection.add_point(point)
  end
  point_collection.circle
end

def scale(value)
  $size / 6 + value * $size / 1.5
end

def draw_circle(circle, color=false)
  center = circle.center
  radius = circle.radius
  $gc.stroke_color(color.to_s) if color
  $gc.circle(scale(center.x), scale(center.y), scale(center.x),
scale(center.y+radius))
end

def draw_point(center, color=false)
  $gc.stroke_color(color.to_s) if color
  $gc.circle(scale(center.x), scale(center.y), scale(center.x),
scale(center.y)+2)
end

def draw_line(p0, p1, color=false)
  $gc.stroke_color(color.to_s) if color
  $gc.line(scale(p0.x), scale(p0.y), scale(p1.x), scale(p1.y))
end


require 'RMagick'
$size = 600
$gc = Magick::Draw.new
$gc.fill_opacity(0)
$gc.stroke_width(2)
$gc.stroke_opacity(1)

samples = generate_samples(ARGV[0].to_i)
circle = encircle(samples)
puts circle

samples.each { |p| draw_point(p, :black) }
draw_circle(circle)
canvas = Magick::ImageList.new
canvas.new_image($size, $size)
$gc.draw(canvas)
canvas.display
=======


-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

In This Thread