32562


下記、3つの配列を生成します。

[code]

    r = []
    3.downto(1) do |x|
      k = gets.split(' ')　　　#数字・半角スペース・数字　と入力
      k = k.map { |v| v.to_i}
      r << k
    end
    p r　　　　　　　　        　#=>　[[1, 2], [3, 4], [5, 6]]
    
[/code]

要素の操作例

[code]

    p r[0][1] ** 2　　　     　#=>　4
    
[/code]

▼本当は `m = [1, 2]`, `n = [3, 4]`, `o = [5, 6]`
とできれば要素の操作がわかりやすいと思っていますが、やり方・可不可がわかりません。  
ご教授いただけますと幸いです。よろしくお願いいたします。

【追記】  
例えば、複数人の買い物金額を、雑貨、食料品、書籍の順に  
m:1000 1100 1200 n:1300 1400 1500 o:1600 1700 1800  
と入力した後で、(これも例ですが、1100に2日分とか3日分ということで2や3〜を掛けたり掛けなかったりして)各人の合計を出す、というものです。  
r = [[1000, 1100, 1200], [1300, 1400 1500], [1600, 1700, 1800]]  
よりも  
m = [1000, 1100, 1200] n = [1300, 1400, 1500] o = [1600, 1700, 1800]  
の方がわかりやすい（r[0][1] と m[1]）し可読性も増すと思われます。


CC BY-SA 3.0
2017-02-10T07:12:26.797
32556
2017-02-10T12:14:31.233
2017-02-10T12:14:31.233
20591
20591
question
ruby
ネストさせずに配列を独立して連続作成する方法　について


インスタンス変数(`@m` `@n` `@o` など)に対してなら以下のようにできます。

[code]

    array_name = 'm'
    
    3.times do
      instance_variable_set('@' + array_name, gets.split(' '))
      array_name.succ!
    end
    
    p @m
    p @n
    p @o
    
[/code]

ローカル変数(`m` `n` `o` など)の場合は、事前に定義されている名前でないと無理だったと思います。

[code]

    array_name = 'm'
    
    m = nil
    n = nil
    o = nil
    b = binding
    
    3.times do
      b.local_variable_set(array_name, gets.split(' '))
      array_name.succ!
    end
    
    p m
    p n
    p o
    
[/code]


CC BY-SA 3.0
2017-02-10T09:37:38.667
32562
2017-02-10T09:49:28.903
2017-02-10T09:49:28.903
17037
17037
32556
answer