#[Ruby編]等差数列を解いてみる
#問題
以下のような数列を出力するプログラムを作りましょう。
5 8 11 14 17 20 23 26 29 32
最初の数字が5で、3ずつ増加していく事がわかります。
一般的にこれを初項5、公差3の等差数列といいます。
このような数列を出力するプログラムを作りましょう。
初項 m が与えられ、公差 n が与えられるので 10番目までの数字をスペース区切りで出力するプログラムを作成してください。
#入力される値
入力は以下のような初項 m、公差 nが半角スペース区切りのフォーマットで与えられます。
入力値最終行の末尾に改行が1つ入ります。
m n
#期待する出力
初項 m ,公差 n の等差数列を1〜10番目までスペース区切りで出力して下さい。
#入力例1
3 3
#出力例1
3 6 9 12 15 18 21 24 27 30
#入力例2
5 10
#出力例2
5 15 25 35 45 55 65 75 85 95
#入力例3
1 3
#出力例3
1 4 7 10 13 16 19 22 25 28
#私の答え
num = gets.chomp.split(" ").map(&:to_i)
x = num[0]
i = 1
array = []
while i <= 10
array << x
x = x + num[1]
i += 1
end
print array.join(" ")
#今回のポイント
###1行目の入力値はスペース区切りがあるので split と map で[3, 3]のような配列にする
###2行目で先ほどの配列の一部を指定して x変数に代入しておく
###3行目で i = 1 としておく事で1回ずつカウントさせる
###4行目でスコープ外でもarrayを使えるようにし、また繰り返し結果を配列に格納する
###5~9行目で i が10回を超えるまで繰り返される。 array[] に x = num[0]を配列演算子 << を使って連結している。while文の場合、 i += 1 の自己代入演算子を忘れてはいけない
###最終行でjoinメソッドを用いて (" ") とする事で配列間にスペースを開けられる
#以上!