こんにちは、沖縄市のプログラミング教室「エイドITキッズ」のミチノリです。

今日は、FizzBuzz問題について書いてみたいと思います。FizzBuzz問題とは、プログラマの間で使われているプログラミングの理解度等がチェック出来る問題です。

 もともとは英語圏で行われる言葉遊びのゲームで、複数名で行う遊びです。

【FizzBuzzの主なルール】

1.複数名で1から順番に交互に数字を言う
2.3で割り切れる数字のときは「Fizz」と言う
3.5で割り切れる数字のときは「Buzz」と言う
4.3でも5でも、両方で割り切れるときは「FizzBuzz」と言う
5.間違えた人は終わり

世界のナベアツさんが一世を風靡した「3の倍数でアホになる」を思い出して下さい。

 3で割り切れる数、5で割り切れる数、15で割り切れる数、そしてそれ以外の数字であるかの条件を判断する必要があります。

 
これらの条件を満たすようにプログラミングを行い、画面上に表示させると結果は下記のようになります。

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz Buzz,・・・
 
一見すると簡単なように思えますが、プログラミングの基本的なルールを理解していないとすべての条件を満たした結果を導き出す事は出来ません。

Wikipediaで紹介されているPythonでの一般的な回答例こちらです。

for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

Wikipedia FizzBuzzより引用

 

プログラミングとは、コンピュータに対して自分のやりたいコトを命令して動かしていくコトです。そして、プログラミングの世界ではその目的や端末(デバイス)に合わせて様々な種類のプログラミング言語が存在します。例えば、WEBサイトを作るのも、iPhoneでアプリを作るのも、アンドロイドでアプリを作るのも、全て異なるプログラミング言語で行います。

「プログラミング言語」は異なりますが、根本にあるのはコンピュータに対して命令を行うことなので、基本的なルールや概念は共通しており、一つのプログラミング言語をある程度理解することで、別のプログラミング言語もすぐに覚える事が出来ます。

上記でPythonというプログラミング言語での回答例を紹介しましたが、FizzBuzz問題は、Scratch(スクラッチ)でも同様に問題を問いて条件にあった結果を出力することが出来ます。

小難しく書いてしまっていますが、FizzBuzz問題は、子供向けプログラミング教室でも理解度を図るためには良い問題だと思います。ただしFizzBuzz問題を解くためには割り算をきちんと理解している必要があるので、小学3年生以上のお子さんが対象にはなりますがとてもよい問題だと思います。

個人的に思いますが、子供たちより大人の方が算数を忘れてしまっていて、FizzBuzz問題を解けないと思います。子供たちだけでなく、保護者もまた同時に学習し続けていく事が大切ですね。