FizzBuzz問題は、最初にFizz、次にBuzz で解く

サンプルコードはPython。

FizzBuzz問題とは

1~100の数字が与えられ、

3で割り切れるなら Fizz を出力する。

5で割り切れるなら Buzz を出力する。

ただし、3と5で割り切れるときは FizzBuzz を出力する。

一般的な解法

def answer1(n):
    ans = ""
    if n % 15 == 0:
        ans = "FizzBuzz"
    elif n % 3 == 0:
        ans = "Fizz"
    elif n % 5 == 0:
        ans = "Buzz"
    else:
        ans = str(n)
    return ans

最初にFizz、次にBuzz を決定する解法

def answer2(n):
    ans = ""
    if n % 3 == 0:
        ans += "Fizz"
    if n % 5 == 0:
        ans += "Buzz"
    if ans == "":
        ans = str(n)
    return ans

この場合、15で割り切れるかを確認しなくて良い。

テスト

for i in range(1, 101):
    print(answer2(i))

コード全体

def answer2(n):
    ans = ""
    if n % 3 == 0:
        ans += "Fizz"
    if n % 5 == 0:
        ans += "Buzz"
    if ans == "":
        ans = str(n)
    return ans

for i in range(1, 101):
    print(answer2(i))

終わりに

15で割り切れるかを確認する解法は多くのWebサイトで紹介されている。

最初にFizz、次にBuzzの出力を決定するような解法はそんなに見かけないと思っていたが、「FizzBuzzBazz: How to answer and how NOT to answer | by Kevin Kim | ITNEXT」で紹介されていた。

Comments

タイトルとURLをコピーしました