【学習ログ】【Ruby】3の倍数と3のつく数字だけ××と出力されるアルゴリズム

※このページは過去に自分がRubyの勉強をしたときの学習ログです。誰かの参考になれば幸いです。

スポンサーリンク

1から40までの数字の中で、3の倍数と3のつく数字だけChanmei!と出力されるアルゴリズムを求めてみた

いきなり完成コード(for文)

#1〜40までで、3の倍数と3がつく数字の時に
#Chanmei!と出力するプログラム

for i in 1..40
   if i % 3 == 0 || i.to_s.include?("3")
    puts "Chanmei!"

    else
    puts i
   end
end

実行結果  → 
1
2
Chanmei!
4
5
Chanmei!
7
8
Chanmei!
10
11
Chanmei!
Chanmei!
14
Chanmei!
16
17
Chanmei!
19
20
Chanmei!
22
Chanmei!
Chanmei!
25
26
Chanmei!
28
29
Chanmei!
Chanmei!
Chanmei!
Chanmei!
Chanmei!
Chanmei!
Chanmei!
Chanmei!
Chanmei!
Chanmei!
40

また、each文だと以下の通り。

いきなり完成コード(each文)

#1〜40までで、3の倍数と3がつく数字の時に
#Chanmei!と出力するプログラム

(1..40).each do |num|
	if num % 3 == 0 || num.to_s.include?("3")
		puts "Chanmei!"

	else
		puts num
	end
end

解説(我流です)

3の倍数とは、3で割り切れる数字のことなのでi % 3 == 0とする。
またinclude?メソッドを使うと、3が存在するかどうか調べられるが
そのままでは使用できず、データ型を文字列にする必要がある。
よって、変数iは整数のため文字列への変換が必要。
そこでto_sメソッドを使って、文字列へ変換し”3”が存在しているかを調べる。
i.to_s.include?("3")とすることで3が含まれる数字は条件分岐でtrueの判定となる。

#for文
for i in 1..40 #1から40までの数字を繰り返し処理
	if i % 3 == 0 || i.to_s.include?("3") #3で割り切れるか3が含まれる数字であれば
		puts "Chanmei!"

	else
		puts i #それ以外は数字を表示する
	end
end


#each文
(1..40).each do |num| #1から40までの数字を繰り返し処理
	if num % 3 == 0 || num.to_s.include?("3")#3で割り切れるか3が含まれる数字であれば
		puts "Chanmei!"

	else
		puts num #それ以外は数字を表示する
	end
end

本日は以上となります。

最後までお読みくださりありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする