LoginSignup
12

More than 5 years have passed since last update.

初めて学ぶ言語ではまずfizzbuzzを書いてみると捗る。

Last updated at Posted at 2015-11-09

新言語を学ぶ時の3つのポイント~見習いPGのメモ~を読んで、
fizzbuzzは新しいプログラミング言語の入門に最適だと思ったという話。

fizzbuzzとは

fizzbuzzとは、数字を使った言葉遊びです。
日本では世界のナベアツ(桂三度)さんのネタでも有名な、
「実数を読み上げていき、決められたタイミングで違うことをする」やつです。
それをプログラムの設問にすると以下のようになります。

1から100(あるいは任意の実数)までの各実数値をひとつずつ表示するプログラムを作成せよ。
ただし、数値が3の倍数の場合は数値の代わりに"fizz"、5の倍数の場合は"buzz"、
3の倍数かつ5の倍数の場合は"fizzbuzz"と表示させること。

処理のアルゴリズムについては解説を省きます。
プログラミング自体の初学者におかれましては、
「どう処理すればこれが実現できるのか?」を考えるのも
プログラミングの工程のひとつですので、自分で考えてみるのもいいかもです。

なぜfizzbuzzが最適か

今までは特に深い理由はなく、以下の翻訳記事を読んでから、
新しい言語を学ぶ時はまずfizzbuzzを書こう、と思って実践してました。
どうしてプログラマに…プログラムが書けないのか?

その後、冒頭で取り上げた記事を読んでいるうちに、
fizzbuzzは以下のような通常のプログラミングで頻繁に使う要素
最低限含んでいる簡潔なプログラムなんだなーと思いました。

  • 数列(配列、リストなど)の生成とその扱い
  • 画面表示(標準出力、ウィンドウ、アラートなど)
  • ループ
  • 条件分岐

また同時にこれらの書き方には
言語による違いが如実に現れていたり、お作法が大きく違っていたりします。
そのため、言語の習熟度によってソースの書き方にも違いが生まれ、
プログラマ業務でよくある以下の作業についても、学ぶことができます。

  • コードの簡素化
  • コードの効率化

さらに、上級fizzbuzzerにいたっては、
処理がシンプルでコードがいかようにも書けることを活かし、
設問に更なる枷を加えてfizzbuzzを書くチャレンジを行う人もいます。

  • 1行で書いてみる(ワンライナー)
  • 不適切に書いてみる

たとえばこんな感じ

以下は自分で書いてみた例です。参考程度にどうぞ。

fizzbuzz.php
<?php
for ($i = 1; $i <= 100; $i++) {
    if ($i % 15 == 0) {
        echo "fizzbuzz";
    } elseif ($i % 5 == 0) {
        echo "buzz";
    } elseif ($i % 3 == 0) {
        echo "fizz";
    } else {
        echo $i;
    }
    echo "\n";
}
fizzbuzz.rb
(1..100).each do |n|
  puts case 0
  when n % 15 then :fizzbuzz
  when n % 5  then :buzz
  when n % 3  then :fizz
  else n
  end
end
fizzbuzz.py
for i in range(1, 101):
    if   i % 15 == 0:
        print "fizzbuzz"
    elif i % 5 == 0:
        print "buzz"
    elif i % 3 == 0:
        print "fizz"
    else:
        print i
fizzbuzz.coffee
for i in [1 .. 100]
    fizz = i % 3 == 0
    buzz = i % 5 == 0

    if fizz and buzz
        console.log 'fizzbuzz'
    else if buzz
        console.log 'buzz'
    else if fizz
        console.log 'fizz'
    else
        console.log i

まとめ

これからもfizzbuzzでプログラミング言語の学習を楽しんでいこうと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12