logo       

[ruby-list:42446] Re: rubyで多次元配列の作り方: msg#00100

lang.ruby.japanese

Subject: [ruby-list:42446] Re: rubyで多次元配列の作り方

鴫谷と申します。

Ken'ichi Saitou wrote:
>> どうにか多次元配列を作る方法(或は多次元配列など使わずに住む別の
>> 考え方)を教えていただけ無いでしょうか?
> 自分もRuby初心者なので、Ruby的な考え方というのはわからないのですが、
> 「配列の配列」は作れました。
>
> irb(main):001:0> arr = []
> => []
> irb(main):002:0> i = 0
> => 0
> irb(main):003:0> while i < 5
> irb(main):004:1> j = 0
> irb(main):005:1> arr_sub = []
> irb(main):006:1> while j < 5
> irb(main):007:2> arr_sub << i+j
> irb(main):008:2> j += 1
> irb(main):009:2> end
> irb(main):010:1> arr << arr_sub
> irb(main):011:1> i += 1
> irb(main):012:1> end
> => nil
> irb(main):013:0> p arr
> [[0, 1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7],
> [4, 5, 6, 7, 8]]
> => nil
> irb(main):017:0> p arr[0][0]
> 0
> => nil
> irb(main):018:0> p arr[1][2]
> 3
> => nil
> irb(main):019:0> p arr[4][4]
> 8
> => nil

多次元配列クラスは、標準では添付されていないと思います。
斎藤さんのように、配列の配列で実現するのが簡単でしょう。

上記の場合は、

irb(main):002:0> Array.new(5) {|i| Array.new(6) {|j| i + j }}
=> [[0, 1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7,
8], [4, 5, 6, 7, 8, 9]]

で一行で記述できます。






<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise