独習Ruby 6 配列

- 作者: 株式会社テクノロジックアート
- 出版社/メーカー: 翔泳社
- 発売日: 2009/06/18
- メディア: 大型本
- クリック: 10回
- この商品を含むブログ (18件) を見る
多次元配列の参照
# coding : utf-8 kana = [["あ","い","う","え","お"],["か","き","く","け","こ"]] puts kana[0] #["あ","い","う","え","お"] puts kana[0][3] #["え"] #kana[0][3] の解釈の仕方 #→配列kanaのインデックス「0」に格納されている配列のインデックス「3」の位置を指定。 # よって答えは「え」 puts kana[0..1][0] #["あ","い","う","え","お"] #kana[0..1][3]の解釈の仕方 # →配列kanaのインデックス「0」から「1」に格納されている配列(→つまり、["あ","い","う","え","お"],["か","き","く","け","こ"]が呼び出される)、そ のインデックス「0」を指定するため ["あ","い","う","え","お"] が呼び出される。
練習問題6.1
1.直前の2要素の合計となる数列を作るプログラムを完成させてください。
僕の回答
a = [1,1] 5.times do |i| a<< a[i] + a[i+1] end puts a.inspect
一応はこれで求められてることはできたつもりだったんだけど…
回答
a = [1,1] 5.times do a<< a[-1] + a[-2] end puts a.inspect
iとか要らなかった。
2.一つの配列から2次元配列を作るプログラムを完成させてください
僕の回答
a = [1,2,3,4,5,6,7,8,9] b = [] a.each do |i| b << a[i-1..i+1] end puts b.inspect #[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9], [9]]
3つの数値ごとで切れてなきゃいけないんだけど、切れてしまってる。「3つ指定する」が出来てないのか…
回答
a = [1,2,3,4,5,6,7,8,9] b = [] i = 0 while i < a.size -2 b << a[i , 3] i += 1 end puts b.inspect
サイズを2引いた数の間という指定をすることでa[i, 3]がちゃんと全部反映されるようになってるんだ。
僕の場合は範囲の指定が全部になってて、しかもaの参照の長さもループごとに大きくなってるから、結果がおかしくなってるんだな。