LoginSignup
0
0

【Ruby】テスト点数の降順で並べ替えて出力するプログラム

Posted at

Rubyを使ったロジックの実装について学習しています。
今回は、並べ替えに関するロジックについてメモしていきます。

やりたいこと

テストの点数の降順で並べ替え、順位をつけて出力したい。

array = [["山田", 89],["菅野", 65],["田中", 59],["斉藤", 78],["竹下", 97]]

こんな感じで出力したい

1: 竹下 97
2: 山田 89
3: 斉藤 78
4: 菅野 65
5: 田中 59

補足

  • 名前、点数の順番で、多重配列で保存されている。
  • 降順は、数字の大きい方が上で、小さい方に向けて並べる。

完成コード

array = [["山田", 89],["菅野", 65],["田中", 59],["斉藤", 78],["竹下", 97]]

sort_array = array.sort{|a,b| b[1] <=> a[1]}

sort_array.each_with_index do |data, index|
  puts "#{index + 1}位: #{data[0]} #{data[1]}点"
end

コードの解説

  • sort_array = array.sort{|a,b| b[1] <=> a[1]}

    • sortメソッドを使い点数の降順になるように並べ替えている。
    • 配列arrayを得点が高い順(降順)にソートして、その結果をsort_arrayに格納している。
    • b[1] <=> a[1]は、配列の要素bの得点とaの得点を比較して、bの得点がaの得点より大きければ1、等しければ0、小さければ-1を返す。
  • sort_array.each_with_index do |data, index| puts "#{index + 1}位: #{data[0]} #{data[1]}点" end

    • eachメソッドを使ってループ処理を作成していく。
    • ここでは、each_with_indexメソッドを使い、順位の数値も変数で出力している。

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0