34 個の要素がありますが、ランク付けされた上位 5 個の要素を知る必要があるだけです。
私は、34 要素すべてで比較「A 対 B」タイプのアンケートを使用しています。
現在、動的ではないため、以前の質問に基づいて質問を変更することはできません。
- アンケートで質問できる質問の最小数は何ですか?
- 使用する並べ替えアルゴリズムは何ですか?
現在、マニュアルと Excel を使用していますが、最終的には基本的な Rails アプリの Ruby でそれを行う方法を知りたいです。
34 個の要素がありますが、ランク付けされた上位 5 個の要素を知る必要があるだけです。
私は、34 要素すべてで比較「A 対 B」タイプのアンケートを使用しています。
現在、動的ではないため、以前の質問に基づいて質問を変更することはできません。
現在、マニュアルと Excel を使用していますが、最終的には基本的な Rails アプリの Ruby でそれを行う方法を知りたいです。
単純な整数、浮動小数点数、または文字列しかない場合は、配列を簡単に並べ替えることができます。
a = [ 3,3,1,6,2,8 ]
a.sort # => [1,2,3,3,6,8]
しかし、これは昇順でソートされます。
降順に並べ替えるには、次のようにします。
a.sort {|x,y| y <=> x } # => [8,6,3,3,2,1]
また
a.sort.reverse # => [8,6,3,3,2,1]
次に、最初の 5 つの要素を取得するには、次を使用します。
a.sort.reverse.take(5) # => [8,6,3,3,2]
ソートしている要素が実際に構造体である場合、 sort_by ブロック内のコードを変更して、それを簡単に説明できます。次に例を示します。
a = [{:score => 5, :name => "Bob"}, {:score => 51, :name => "Jane"}, \
{:score => 15, :name => "Joe"}, {:score => 23, :name => "John"}, \
{:score => 35, :name => "Sam"}, {:score => 1, :name => "Rob"}]
a.sort_by{|x| x[:score] }.reverse.take(5)
# => [{:score => 51, :name => "Jane"},{:score => 35, :name => "Sam"},...]