0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

1から1000までのフィボナッチ数列を排出するプログラム[ruby] pop / shift / delete_atメソッド

Posted at

コーディングテストで学びの多かった問題に出会えたので、この記事を通して復習を行いたいと思います。

問題

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メソッドの返り値はあくまで、削除した要素。

今回の記事は以上です!!
最後まで目を通していただきありがとうございました!!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?