質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1520閲覧

Rubyでランキング順に出力

fuku-ruby

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2022/01/03 07:57

前提・実現したいこと

私はプログラミングの勉強をしており問題を解いています。
現在はRubyでファイルを読み取り、血液型の項目の人数をカウントした後に昇順に順位付けをするという問題を行っています。
現在はここまで進め、人数のカウントとその人数を昇順にソートすることは出来てます。

しかし最後の順位を出す部分で詰まってしまいました。
現在は仮で順位の部分をi=1でおいていますが、この部分を増えるようにしたいです。

ーメッセージ

### gets atype = 0 btype = 0 otype = 0 abtype = 0 Blood = {'A' => 0, 'B' => 0, 'O' => 0, 'AB' => 0,} while line = gets line.chomp! line_array = line.split(',') if(line_array[12] == 'A') atype += 1 elsif(line_array[12] == 'B') btype += 1 elsif(line_array[12] == 'O') otype += 1 else(line_array[12] == 'AB') abtype += 1 end end b = {"A" => atype,"B" => btype,"O" => otype,"AB" => abtype} c = b.sort{|a,b|b[1]<=>a[1]} c.each do |a, b| i = 1 puts "#{i}位: #{a} #{b}人" end ```ここに言語名を入力 Ruby

試したこと

each_with_indexを使えば出来るのですが、その場合の出力結果はbのkeyとvalueを[]で囲んだ形で出力されてしまいました。
どうにか[]がつかない方法、もしくはeachのままで順位部分のiを増やす方法を知りたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

良いところまで行ってますね。
2つ方法があります。
c.each_with_index do |a_b, idx| とした場合は
a_b が["A", 19] みたいになってきますから、a_b[0], a_b[1] を使えば良いです。

c.each_with_index do |(a, b), idx| とすると a, b に値が入ってきます。

投稿2022/01/03 08:12

winterboum

総合スコア23340

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuku-ruby

2022/01/03 08:57

詳しい回答ありがとうございます! おかげさまでしっかりと想定通りの出力することが出来ました!
guest

0

ベストアンサー

ruby

1c.each_with_index do |(a, b), i| 2 puts "#{i+1}位: #{a}#{b}人" 3end

投稿2022/01/03 08:11

melian

総合スコア19771

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuku-ruby

2022/01/03 08:57

お早い回答ありがとうございます! 助かりました!
fuku-ruby

2022/01/03 09:47

今回は一番早かったのでベストアンサーとさせていただきました。 重ね重ねありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問