Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #4550
| From | 7stud -- <bbxx789_05ss@yahoo.com> |
|---|---|
| Newsgroups | comp.lang.ruby |
| Subject | Re: search nearest to elements in array (hash) |
| Date | 2011-05-14 16:36 -0500 |
| Organization | Service de news de lacave.net |
| Message-ID | <3e44bf8f5bebd6b6f83bea258b3707b9@ruby-forum.com> (permalink) |
| References | <86667b5fe1841c16852cd7c86dc82656@ruby-forum.com> <e14a95c303a52d74dfbb6f4eb1af888e@ruby-forum.com> |
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/.
Back to comp.lang.ruby | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
search nearest to elements in array (hash) "Mateus .." <excanoe@gmail.com> - 2011-05-14 16:05 -0500
Re: search nearest to elements in array (hash) serialhex <serialhex@gmail.com> - 2011-05-14 16:21 -0500
Re: search nearest to elements in array (hash) 7stud -- <bbxx789_05ss@yahoo.com> - 2011-05-14 16:28 -0500
Re: search nearest to elements in array (hash) Martin DeMello <martindemello@gmail.com> - 2011-05-14 16:33 -0500
Re: search nearest to elements in array (hash) 7stud -- <bbxx789_05ss@yahoo.com> - 2011-05-14 16:36 -0500
Re: search nearest to elements in array (hash) Martin DeMello <martindemello@gmail.com> - 2011-05-14 16:30 -0500
Re: search nearest to elements in array (hash) "Mateus .." <excanoe@gmail.com> - 2011-05-15 01:33 -0500
csiph-web