Skip to content

Instantly share code, notes, and snippets.

@kkosuge
Created June 14, 2012 07:41
Show Gist options
  • Save kkosuge/2928806 to your computer and use it in GitHub Desktop.
Save kkosuge/2928806 to your computer and use it in GitHub Desktop.
配列に含まれている数量が多い順番にソートして重複した要素を取り除く[Ruby]

配列に含まれている数量が多い順番にソートして重複した要素を取り除く[Ruby]

class Array
  def sort_by_larger
    self.group_by{|i| i}
    .map{|k,v| [k,v.size]}
    .sort{|a,b| (b[1] <=> a[1]) * 2 + (a[0] <=> b[0])}
    .map{|a| a[0]}
  end
end

p [1,2,3,3,3,3,3,4,4,5,5,5].sort_by_larger

#=> [3, 5, 4, 1, 2]

他になんかいい方法とかより良いメソッド名があったら教えてくださひ

@kkosuge
Copy link
Author

kkosuge commented Jun 14, 2012

@kkosuge
Copy link
Author

kkosuge commented Jun 14, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment