Hi,
I’m doing the following:
indices = 1.upto(points.size)
zipped = indices.zip(distances, points)
Basically, I’m temporarily annotating my point objects with an index
to avoid losing track of its original position.
indices is just a list going from 1 to points.size.
This works find with ruby 1.8.7, but not for ruby 1.8.6, where upto()
requires a block.
What’s the most rubyesque way of doing the same thing in 1.8.6?
Thanks,
Tom
What’s the most rubyesque way of doing the same thing in 1.8.6?
Got it! I just discovered .to_a:
(1…4).to_a => [1,2,3,4]
Tom
On Nov 11, 10:13 pm, Peña, Botp [email protected] wrote:
?
In later steps, the list gets sorted by the ‘distance’ field, then
truncated and then sorted back in the original order, but with some
inside points removed.
Like this:
indices = (1..points.size).to_a
zipped = indices.zip(distances, points)
zipped = zipped.delete_if { |x| x[1].nil? }
zipped.sort! { |x,y| y[1] <=> x[1] }
zipped = zipped.slice(0, max_nr_points)
Sort back in original order
zipped.sort! { |x,y| x[0] <=> y[0] }
points = zipped.collect { |p| p[2] }
Tom
From: Tom Verbeure [mailto:[email protected]]
indices = 1.upto(points.size)
zipped = indices.zip(distances, points)
(1…points.size).zip(distances,points)
but arrays have builtin indices, why not
distances.zip(points)
?