プログラミング学習をしているといつか遭遇する世界のナベ○ツ問題。私は今朝でした。
中々具現化せずにスルーしていく人が多いであろうなか締切が迫っているプロジェクトを差し置いてやる。やらねばならない。
【問題】
「「3の倍数と3のつく数字のときだけアホになります」をターミナルに出力しなさい。」
【構想】
条件分岐と条件の組み合わせを利用して実装ができそうです。
範囲→メインとなる30代の数字は全部出力したいので40までとしましょう。
アホになる→リスペクトも込めて「語尾に"!!!"を付与する」あたりで手を打ちましょう。
【step1】
whileメソッドを使って指定した条件下で繰り返し処理を行うよう大枠を作成しましょう。
def everything_that_happens_twice_will_surely_happen_a_third_time
num = 1
while num <= 40 do
ここに条件を書くよ
num = num + 1
end
end
1から始まるようnumを定義し、whileメソッドで40以下と設定してdo~end間の処理を繰り返します。※doは省略可
num = num + 1 とすることで繰り返し処理の流れでnumを変化させます。
【step2】
3の倍数と3のつく数字のときだけアホになるを条件としてコード化します。
if num.to_s.include?("3") || num % 3 == 0
puts "#{num}っ!!!"
else
puts num
end
3の倍数に関しては%を使い3で割った際の余りが0であれば達成。
問題は3のつく数字のときを条件式に落とし込む点。私の引き出しには数値を参照するメソッドがないため、'to_s'を使ってnumを一度文字列にした上で'include?'を使って文字として"3"を参照しました。include?って数値参照できないのね!
【step3】
だいたい完成ですね。どきどきしてきました。
ただ、思い返していると度々数字を言い切った後に締めの一言を発していたような
範囲を41までにしてnum == 41のときに締める条件を足して完成させましょう。
def everything_that_happens_twice_will_surely_happen_a_third_time
num = 1
while num <= 41 do
if num.to_s.include?("3") || num % 3 == 0
puts "#{num}っ!!!"
elsif num == 41
puts "ぁおもろぉーぅ!"
else
puts num
end
num = num + 1
end
end
できたっっっ!
ターミナルで実行してみます。
楽しかったです。
メソッド名だけでも覚えて帰ってください。
以上。