From: Sergey Volkov Date: 2006-05-06T03:45:54+09:00 Subject: Re: Finding an interval in a sorted array? class Array def interval_containing( x ) # elegant code goes here [select{|e|e<=x}[-1], select{|e|e>=x}[0]].compact.uniq end end % ruby tIntervalContaining.rb Loaded suite tIntervalContaining Started . Finished in 0.0 seconds. 1 tests, 7 assertions, 0 failures, 0 errors --------- best Sergey ----- Original Message ----- From: "Bil Kleb" To: "ruby-talk ML" Sent: Friday, May 05, 2006 1:25 PM Subject: Finding an interval in a sorted array? > Hello, > > Surely there is a way to find an interval in a sorted array > without resorting to indices? (I'm drawing a blank.) > > require 'test/unit' > > class Array > def interval_containing( x ) > # elegant code goes here > end > end > > class TestIntervalFinder < Test::Unit::TestCase > def test_finds_intervals > data = [ 0, 1, 2 ].sort > assert_equal [0], data.interval_containing(-0.2) > assert_equal [0], data.interval_containing( 0.0) > assert_equal [0,1], data.interval_containing( 0.5) > assert_equal [1], data.interval_containing( 1.0) > assert_equal [1,2], data.interval_containing( 1.6) > assert_equal [2], data.interval_containing( 2.0) > assert_equal [2], data.interval_containing( 5.0) > end > end > > Thanks, > -- > Bil > http://fun3d.larc.nasa.gov >