寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

paizaラーニング: FizzBuzz問題(C, C++, Python, Java)

ループと条件分岐についての問題と、その提出コードの解答例です。
paizaラーニングのレベルアップ問題集「スキルチェック見本問題」からの出典です。
paiza.jp
・問題
 整数 N が入力として与えられます。
 1からNまでの整数を1から順に表示してください。
 ただし、表示しようとしている数値が、
   3の倍数かつ5の倍数のときには、"Fizz Buzz"
   3の倍数のときには、"Fizz"
   5の倍数のときには、"Buzz"
 を数値の代わりに表示してください。

・入力される値:入力は以下のフォーマットで与えられます。
   N
 N は1以上N以下の整数です。
 文字列は標準入力から渡されます。

・期待する出力
 最後は改行し、余計な文字、空行を含んではいけません。

・条件
 すべてのテストケースにおいて、以下の条件をみたします。
   1 ≦ N ≦ 100
   N は整数

僕が作成、提出したコードは、以下のとおりです。

/*
ループと条件分岐についての問題(FizzBuzz問題)
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include <stdio.h>
int main(void) {
    int N,i;
    scanf("%d",&N);
    for (i=1;i<=N;i++) {
        if (i%3==0 && i%5==0) {
            printf("Fizz Buzz\n");
        } else if(i%3==0) {
            printf("Fizz\n");
        } else if (i%5==0) {
            printf("Buzz\n");
        } else {
            printf("%d\n",i);
        }
    }
    return 0;
}
/*
ループと条件分岐についての問題(FizzBuzz問題)
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<stdio.h>
int main(void){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        if(i%15==0){
            printf("Fizz Buzz\n");
        }else if(i%5==0){
            printf("Buzz\n");
        }else if(i%3==0){
            printf("Fizz\n");
        }else{
            printf("%d\n",i);
        }
    }
    return 0;
}

Pythonのバージョンは、3.x に対応します。

#ループと条件分岐についての問題(FizzBuzz問題)
#https://paiza.jp/works/mondai
#提出コードの解答例
#https://neguse-atama.hatenablog.com
N = int(input())
for N in range(1, N+1, 1):
    if N % 15 == 0:
        print("Fizz Buzz")
    elif N % 3 == 0:
        print("Fizz")
    elif N % 5 == 0:
        print("Buzz")
    else:
        print(N)
/*
ループと条件分岐についての問題(FizzBuzz問題)
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for(int i = 1; i <= n; i++){
            if(i % 15 == 0){
                System.out.println("Fizz Buzz");
            }else if(i % 3 == 0){
                System.out.println("Fizz");
            }else if(i % 5 == 0){
                System.out.println("Buzz");
            }else{
            System.out.println(i);
            }
        }
    }
}

この問題を通して、はじめて知ったのですが、「Fizz Buzz」は英語圏で長距離ドライブ中や飲み会の時に行われる言葉遊びなのだそうです。
https://ja.wikipedia.org/wiki/Fizz_Buzz
またプログラミングにおいては、コードが書けないプログラマ志願者を見分ける手法として、「FizzBuzz問題」などと呼ばれているようです。
僕はプログラマ志願者ではありませんが、簡単に書けたから安心しました。
今は臨時休校中の小学3年生ですが、来月からは4年生になる予定です。

それから「FizzBuzz問題」に関しては、率直に言って面白かったです。
日本国内のプログラミングコンテストの表彰式やプレゼンテーションの場などでは、ぜひやってもらいたいと思いました。

なおpaizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。