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

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

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

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

配列

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

Q&A

解決済

2回答

3409閲覧

Rubyで2次元の入力を二次元配列に格納する

nazo_o

総合スコア99

Ruby

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

配列

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

0グッド

0クリップ

投稿2016/09/19 05:21

Rubyで2次元の入力を二次元配列に格納したいです。

例えば、入力の値が
4 3
10 50 10
50 10 50
10 10 50
50 50 10

のように、まず初めの行で 行 列 の数を指定して、その後に入力される二次元の数値を

array = [[10, 50, 10], [50, 10, 50], [10, 10, 50], [50, 50, 10]]

のように二次元配列に格納することを目標としています。

そこで私が考えたのは、

Ruby

1h,w=gets.split.map(&:to_i) 2x = [] 3 4for i in 1..h do 5 x.push(gets.chomp) 6end 7 8for i in 1..h do 9 x[i] = x[i].split.map(&:to_i) 10end

しかし、これではうまくいかないようです。他にもいろいろ検索してみたのですが、あまり情報を見つけ出せませんでした。ですので、これを実現できる方法がわかる方がいらっしゃいましたら、ご教授いただきたいです。宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

無駄のあるプログラムですが、1点直せば動きます。
配列の添え字は、0始まりなので、
for i in 1..h do(1からhまで)をfor i in 0...h do(0からh未満まで)に変えてください。

投稿2016/09/19 14:43

otn

総合スコア84505

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

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

0

ベストアンサー

Rubyで2次元の入力を二次元配列に格納したいです

ruby

1h = 0 2buf = [] 3 4line = gets.split(' ').map(&:to_i) 5text = Array.new(line[0]).map{Array.new()} 6 7while line = gets 8 buf = line.split(' ').map(&:to_i) 9 text[h] += buf 10 h += 1 11end 12 13p text

ご質問の要件は満たしていますが、
もっと良いやり方はいろいろありそうです。

たとえば、上のコードで「4 3」の3は不要ですし、
100行とかに増えたときに行数を数えるのが面倒だし、
そもそもテキストファイルやCSVから読みたいです。

しかし、追求し出すとキリがないので、
サンプルを叩き台に改造してください。

投稿2016/09/19 08:59

LLman

総合スコア5592

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

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

nazo_o

2016/09/19 10:09

どうもありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問