コンパイラかく語りき

import { Fun } from 'programming'

【Ruby】配列の最多要素を取得

Rubyです。

配列でもっとも数の多い要素を取得する方法について、調べてみました。

 

どうやら、max_byを使うのがよさそう。

osa.hatenablog.com

 

こんな感じ。

gist119ad15321cd485f62dcbe768c36d810

 

配列に対して、max_by関数を用いて、そのブロック内でcount関数を使っています。

ruby-doc.org

 

ただ、参考にした上記のブログポストでは、最多が複数ある場合は未考慮です。

max_byを使うと、最多要素のうち最初のものを返してしまうので、工夫が必要そう。

 

gistec04eb13b98e01fe6b2f34d9b0a645dd 

一応出来ました。

まず、最多要素は配列の中でいくつの要素を持つのかを数えます。

そして、その数と等しい要素数の要素から為る配列を作成します。

 

うーん、なんか冗長っぽい。もっと良い方法がありそうです。