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

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

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

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

761閲覧

アルゴリズム問題でHashの中身を一列に表示したい

kohei_04

総合スコア12

Ruby

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/11/06 12:57

#rubyのアルゴリズム問題のお題
n 行のユーザーとタイプの組が与えられるので、ユーザーをキー、タイプを値として、連想配列(辞書)に保存してください。
そのあとで連想配列(辞書)をそのまま表示してください。

#入出力例

ruby

1#入力例 25 3Kyoko B 4Rio O 5Tsubame AB 6KurodaSensei A 7NekoSensei A

ruby

1#出力 2Kyoko B 3Rio O 4Tsubame AB 5KurodaSensei A 6NekoSensei A

#自分で組んだアルゴリズム(キーとバリューで改行されてしまいます)

ruby

1count = gets.to_i 2 3count.times do 4 info = gets.chomp.split(" ") 5 info.each{|name,type| puts "#{name} #{type}"} 6end

#模範解答

ruby

1num = gets.chomp.to_i 2 3user2blood = {} 4 5(1..num).each do 6 array = gets.chomp.split(' ') 7puts array[1] 8 user2blood[array[0]] = array[1] 9end 10 11user2blood.each { |key, value| puts "#{key} #{value}" }

#わからない点
今回の問は下記の記述で問題なく動いてはくれるのですが、お題の保存に反するので上記のアルゴリズムを組みました。

ruby

1count = gets.to_i 2count.times do 3 a = gets 4 puts a 5end

自分で組んだアルゴリズムだとどうしてもキーとバリューが一列に表示されないので諦めて回答を確認しました。
回答のアルゴリズムにある
"user2blood[array[0]] = array[1]"記述の理解ができませんでした。配列"user2blood"の中の"array[0]"に"array[1]"を代入していると思うのですがなぜこの記述があれば"出力例"の状態が表示できるのでしょうか??

お手数おかけしますが、ご教授頂けますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

melian

2021/11/06 13:21

本題からは外れますが、 [info].each{|name,type| puts "#{name} #{type}"} とすると期待通りの結果を表示します。理由については、、、自分で考えてみて下さい。
kohei_04

2021/11/06 13:53

ご回答ありがとうございます!! 助言の記述で表示できました!! "[info]"この記述で配列になったのではと仮設をたてたのですが、いかがでしょうか??
melian

2021/11/06 14:01

正確には2次元配列になったということです。 info.each{|name, type| puts type} と [info].each{|name, type| puts type} の出力の違いを見比べてみて下さい。
kohei_04

2021/11/06 14:21

二次元配列!!!ありがとうございます!! 詳しく調べてみます!!
guest

回答1

0

ベストアンサー

連想配列 がわかっていないですね。rubyの課題で連想配列を使うのはちょっと、と思う点もありますが。
模範解答を見るとわかるかと思いますが、これは Array ではなく、Hashを作れ、ということです。

Kyoko B が来たとき user2blood[array[0]] = array[1]
user2blood["Kyoko"] = "B" と動きます。

投稿2021/11/06 13:15

winterboum

総合スコア23567

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

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

kohei_04

2021/11/06 13:57

ありがとうございます!!なるほど・・・配列の考えをしてしまっていたので記述がわからなかったのですね、連想配列を調べてみます!!
winterboum

2021/11/06 23:49

連想配列を使うのは => 連想配列という呼び方を使うのは に修正。 Hash です。
kohei_04

2021/11/07 15:15

ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問