###「Ruby」回答のコードで何故動くのか分からない
表題の問題を解いていましたが分からなかった為、答えを確認しました。しかし、答えを見ても何故そのコードで動くのか分かりませんでした。
下記に問題、回答コード、不明点を下記しました。
問題
1行目に行数を表す整数 n、続く n 行の各行で「文字」と「整数」の組が空白区切りで入力されます。
n 個の組を、「整数」の値で昇順に並べ変え、「文字」を出力してください。
●入力される値
入力は以下のフォーマットで与えられます。
n
S_1 D_1
S_2 D_2
...
S_i D_i
...
S_n D_n
S_i は「文字」で、D_i は「整数」です。
入力される文字 S_i は、同じ文字が複数入力されることはなく、整数 D_i も同様です。
●期待する出力
n 個の組を、「整数」の値で昇順に並べ変え、「文字列」を1行ずつ出力してください。
●入力例1
2
A 1
B 2
●出力例1
A
B
回答コード
num = gets.chomp.to_i array = {} (1..num).each do line = gets.chomp.split(' ') array[line[1].to_i] = line[0] end array = array.sort array.each do |ele| puts ele[1] end
不明点
array[line[1].to_i] = line[0]
array[line[1].to_i] は何を指しているか分かるのですが、line[0]に何故格納するのか分かりません
また、自身の認識ですと、この様に記入すると言う事は、何かの値を格納すると言う意味になる為、動かなくなるイメージです。
上記のコードはどの様な動きになっているか教えていただけませんか。
また、このコードで動いているので、どの様に出力されているか知る為、p array を記載した所、
{1=>"A", 2=>"B"}
と出力されました。何故、唐突にHashで生成されているのか教えて頂きたいです。
array.each do |ele| puts ele[1] end
最終行でのarrayは{1=>"A", 2=>"B"} になっているので、英語の文字のみを出力する為、puts ele[1]を記載したと言う認識で間違っていないでしょうか。
初歩的な疑問だと思われますが、不明点について、ご回答して頂けたら幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。