Skip to content

Instantly share code, notes, and snippets.

@rklemme
Created November 30, 2012 11:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rklemme/4175335 to your computer and use it in GitHub Desktop.
Save rklemme/4175335 to your computer and use it in GitHub Desktop.
Obtain the smalles n items from an Enumerable
module Enumerable
def n_min(n)
raise "Illegal argument: #{n.inspect}" unless n > 0
mins = []
each do |item|
mins.push item
mins.sort!
mins.pop if mins.size > n
end
mins
end
end
module Enumerable
def n_min(n)
raise "Illegal argument: #{n.inspect}" unless n > 0
mins = []
each do |item|
mins.size.times do |i|
if item < mins[i]
mins.insert i, item
break false
end
end and mins.push item
mins.pop if mins.size > n
end
mins
end
end
module Enumerable
def n_min(n)
raise "Illegal argument: #{n.inspect}" unless n > 0
mins = []
each do |item|
mins.size.times do |i|
if item < mins[i]
mins.insert i, item
mins.pop if mins.size > n
break false
end
end and mins.size < n and mins.push item
end
mins
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment