コーディングテストで学びの多かった問題に出会えたので、この記事を通して復習を行いたいと思います。
問題
1から1000までのフィボナッチ数列を出力するアルゴリズムを作成する。
フィボナッチ数列とは、最初の二つの数字が1で、三つ目以降がすべて直前の二つの数字の和になっている数列。
例) 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89…
回答 (初期)
answers = [1, 1]
while answers.last < 1000 do
answer = answers.reverse[0] + answers.reverse[1]
answers.push(answer)
end
puts answers
解答 (復習後)
answers = [1, 1]
while answers.last < 1000 do
answers.push(answers[-1] + answers[-2])
end
answers.pop
puts answers
学び
以下にリファクタリング際に学んだメソッドをまとめます。
その際に、配列としてarray = [1, 10, 100, 1000, 10000]
を具体例として扱う
配列の要素のマイナス指定
array[-1] #=> 10000
array[-2] #=> 1000
popメソッド
array.pop #=> 10000
array #=> [1, 10, 100, 1000]
# または
array.pop(2) #=> 1000, 10000
array #=> [1, 10, 100]
指定した数字分要素を後ろから削除する。ただpopメソッド
の返り値はあくまで、削除した要素。
shiftメソッド
array.shift #=> 1
array #=> [10, 100, 1000, 1000]
# または
array.shift(2) #=> 1, 10
array #=> [100, 1000, 1000]
指定した数字分要素を先頭から削除する。ただshiftメソッド
の返り値はあくまで、削除した要素。
delete_at (数字) メソッド
array.delete_at(2) #=> 100
array #=> [1, 10, 1000, 1000]
指定したインデックスの要素を削除する。ただdelete_atメソッド
の返り値はあくまで、削除した要素。
今回の記事は以上です!!
最後まで目を通していただきありがとうございました!!