Ara.T.Howard-2 wrote:
> 
> 
> On Oct 29, 2007, at 2:19 PM, trebor777 wrote:
> 
>>
>> Hi!
>>
>> I'm searching for a light method for finding the closest items to a  
>> given
>> value.
>>
>> example/
>>
>> 1..10
>> in a range
>> i give,  5.5, return  5 and 6  for example....
>>
>> as i'm working with arrays, containing numbers, but with no regular  
>> step...
>> it will change i think.
>> example..
>>
>> a = [ 1, 1.25, 2, 3, 3.5 ]
>>
>> if i give 1.85, it gives me 1.25 and 2
>>
>> It's for a little music game, where player has to tap at the right  
>> moment,
>> notes are register in a array, with the correct time, and as  
>> players can't
>> be accurate as a computer, i need some error margin. I working  
>> with  0.05
>> rounded values.
> 
> install rbtree - it has upper_bound and lower_bound methods that do  
> just this - otherwise you can do something like this:
> 
> 
> 
> cfp:~ > cat a.rb
> require 'alib'
> 
> Array.send :include, alib.bsearch
> 
> list = %w( a b c c c d e f )
> index = list.bsearch_first {|x| x <=> "c"}
> p list[index - 1 .. index + 1]
> 
> list = %w( a b c c c d e f )
> index = list.bsearch_last {|x| x <=> "c"}
> p list[index - 1 .. index + 1]
> 
> 
> cfp:~ > ruby a.rb
> ["b", "c", "c"]
> ["c", "c", "d"]
> 
> 
> 
> a @ http://codeforpeople.com/
> --
> it is not enough to be compassionate.  you must act.
> h.h. the 14th dalai lama
> 
> 

While waiting for solutions, i did something really similar.

a = myhash.keys.sort[value-0.05..value+0.05]

then i just use 

myhash[a[x]]
-- 
View this message in context: http://www.nabble.com/find-the-closest-items-in-an-array-to-a-given-value.-tf4714369.html#a13481318
Sent from the ruby-talk mailing list archive at Nabble.com.