Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!aioe.org!feeder.news-service.com!de-l.enfer-du-nord.net!feeder2.enfer-du-nord.net!talisker.lacave.net!lacave.net!not-for-mail From: 7stud -- Newsgroups: comp.lang.ruby Subject: Re: search nearest to elements in array (hash) Date: Sat, 14 May 2011 16:36:28 -0500 Organization: Service de news de lacave.net Lines: 44 Message-ID: <3e44bf8f5bebd6b6f83bea258b3707b9@ruby-forum.com> References: <86667b5fe1841c16852cd7c86dc82656@ruby-forum.com> NNTP-Posting-Host: bristol.highgroove.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Trace: talisker.lacave.net 1305409003 40567 65.111.164.187 (14 May 2011 21:36:43 GMT) X-Complaints-To: abuse@lacave.net NNTP-Posting-Date: Sat, 14 May 2011 21:36:43 +0000 (UTC) In-Reply-To: X-Received-From: This message has been automatically forwarded from the ruby-talk mailing list by a gateway at comp.lang.ruby. If it is SPAM, it did not originate at comp.lang.ruby. Please report the original sender, and not us. Thanks! For more details about this gateway, please visit: http://blog.grayproductions.net/categories/the_gateway X-Mail-Count: 383262 X-Ml-Name: ruby-talk X-Rubymirror: Yes X-Ruby-Talk: <3e44bf8f5bebd6b6f83bea258b3707b9@ruby-forum.com> Xref: x330-a1.tempe.blueboxinc.net comp.lang.ruby:4550 7stud -- wrote in post #998723: > data = [1.1, 4.2, 3.1, 2.6, 6.1, 5.0] > needle = rand 10 > > arr = data.map do |num| > [(num - needle).abs, num] > end > > sorted = arr.sort_by {|sub_arr| sub_arr[0]} > > puts needle > puts sorted.first[1] > > --output:-- > 2 > 2.6 And...if you want a ranking of the differences, add one more map(): data = [1.1, 4.2, 3.1, 2.6, 6.1, 5.0] needle = rand 10 arr = data.map do |num| [(num - needle).abs, num] end sorted = arr.sort_by {|sub_arr| sub_arr[0]} rankings = sorted.map {|sub_arr| sub_arr[1]} puts needle p sorted puts sorted.first[1] p rankings --output:-- 2 [[0.6000000000000001, 2.6], [0.8999999999999999, 1.1], [1.1, 3.1], [2.2, 4.2], [3.0, 5.0], [4.1, 6.1]] 2.6 [2.6, 1.1, 3.1, 4.2, 5.0, 6.1] -- Posted via http://www.ruby-forum.com/.