LoginSignup
5
4

More than 1 year has passed since last update.

20代後半以上の初学者が必ずぶちあたる問題に今ある知識で立ち向かう。

Last updated at Posted at 2021-09-10

プログラミング学習をしているといつか遭遇する世界のナベ○ツ問題。私は今朝でした。
中々具現化せずにスルーしていく人が多いであろうなか締切が迫っているプロジェクトを差し置いてやる。やらねばならない。

【問題】
「「3の倍数と3のつく数字のときだけアホになります」をターミナルに出力しなさい。」

【構想】
条件分岐と条件の組み合わせを利用して実装ができそうです。
範囲→メインとなる30代の数字は全部出力したいので40までとしましょう。
アホになる→リスペクトも込めて「語尾に"!!!"を付与する」あたりで手を打ちましょう。

【step1】
whileメソッドを使って指定した条件下で繰り返し処理を行うよう大枠を作成しましょう。

qiita.rb
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のつく数字のときだけアホになるを条件としてコード化します。

qiita.rb
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のときに締める条件を足して完成させましょう。

qiita.rb
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

できたっっっ!
ターミナルで実行してみます。

3の倍数だけ、、、.png

楽しかったです。
メソッド名だけでも覚えて帰ってください。

以上。

5
4
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
5
4