【初心者向け】Fizzbuzzをメソッドを使用して解く


Fizzbuzzの問題を応用し、数字の横にFizzbuzzを表示させてみた。

条件
・1~100までを表示させる
・3は数字の3とその横にfizzと表示
・5は数字の5とその横にbuzzと表示
・15は数字の15とその横にfizzbuzzと表示
・それぞれfizz,buzz,fizzbuzzのメソッドを使用すること

擬似コードを書く


def fizzbuzz
  #15と表示
  #15の横にfizzbuzzと表示させる
end

def fizz
  #3と表示
  #3の横にfizzと表示させる
end

def buzz
  #5と表示
  #5の横にbuzzと表示させる
end


1~100までの繰り返し文
 もし15で割って0なら
    fizzbuzzメソッドへ
  もし3で割って0なら
    fizzメソッドへ
  もし5で割って0なら
    buzzメソッドへ
  その他は
    数字をそのまま表示
  end
end

コーディングしていく


def fizzbuzz(num)
  print num
  num = "fizzbuzz"
  puts ":#{num}"
end

def fizz(num)
  print num
  num = "fizz"
  puts ":#{num}"
end

def buzz(num)
  print num
  num = "buzz"
  puts ":#{num}"
end

(1..100).each do |num|
  if num % 15 == 0
    fizzbuzz(num)
  elsif num % 3 == 0
    fizz(num)
  elsif num % 5 == 0
    buzz(num)
  else
    puts num
  end
end

ポイント

・引数のnumを除いてやってみると、Nameerrorが出ます。
・printは改行せずに表示してくれます。
・putsは改行します。

動作確認

1
2
3:fizz
4
5:buzz
6:fizz
7
8
9:fizz
10:buzz
11
12:fizz
13
14
15:fizzbuzz
16
17
18:fizz
19
20:buzz
21:fizz
22
23
24:fizz
25:buzz
26
27:fizz
28
29
30:fizzbuzz
31
32
33:fizz
34
35:buzz
36:fizz
37
38
39:fizz
40:buzz
41
42:fizz
43
44
45:fizzbuzz
46
47
48:fizz
49
50:buzz
51:fizz
52
53
54:fizz
55:buzz
56
57:fizz
58
59
60:fizzbuzz
61
62
63:fizz
64
65:buzz
66:fizz
67
68
69:fizz
70:buzz
71
72:fizz
73
74
75:fizzbuzz
76
77
78:fizz
79
80:buzz
81:fizz
82
83
84:fizz
85:buzz
86
87:fizz
88
89
90:fizzbuzz
91
92
93:fizz
94
95:buzz
96:fizz
97
98
99:fizz
100:buzz

こんなお遊びがお役に立てると幸いです。


ここからさらにFizzbuzzを遊んでいきます。
fizzbuzzの際は、さらにアホゥと叫ぶコードを追加していきます。

っといっても引数を追加して表示させるだけなのですが、

fizzbuzzの際に、さらにアホゥと数字の横に並べて表示させる


def fizzbuzz(num, aho)
  print num
  num = "fizzbuzz"
  aho = "アホゥ!"
  print ":#{num}"
  puts "#{aho}"
end

def fizz(num)
  print num
  num = "fizz"
  puts ":#{num}"
end

def buzz(num)
  print num
  num = "buzz"
  puts ":#{num}"
end


(1..100).each do |num, aho|
  if num % 15 == 0
    fizzbuzz(num, aho)
  elsif num % 3 == 0
    fizz(num)
  elsif num % 5 == 0
    buzz(num)
  else
    puts num
  end
end

動作確認(アホゥver)

1
2
3:fizz
4
5:buzz
6:fizz
7
8
9:fizz
10:buzz
11
12:fizz
13
14
15:fizzbuzzアホゥ!
16
17
18:fizz
19
20:buzz
21:fizz
22
23
24:fizz
25:buzz
26
27:fizz
28
29
30:fizzbuzzアホゥ!
31
32
33:fizz
34
35:buzz
36:fizz
37
38
39:fizz
40:buzz
41
42:fizz
43
44
45:fizzbuzzアホゥ!
46
47
48:fizz
49
50:buzz
51:fizz
52
53
54:fizz
55:buzz
56
57:fizz
58
59
60:fizzbuzzアホゥ!
61
62
63:fizz
64
65:buzz
66:fizz
67
68
69:fizz
70:buzz
71
72:fizz
73
74
75:fizzbuzzアホゥ!
76
77
78:fizz
79
80:buzz
81:fizz
82
83
84:fizz
85:buzz
86
87:fizz
88
89
90:fizzbuzzアホゥ!
91
92
93:fizz
94
95:buzz
96:fizz
97
98
99:fizz
100:buzz

ここは違うよ。または、ここはこうしたほうがセンスいいんじゃない?
等々ございましたらご指摘いただけますと幸いです。

最後までみていただき、ありがとうございました。