はじめに

Twitter で Fizz buzz が話題になりました。

Fizz buzz のことは知っていましたが、書いたことが無かったので、サクッと書いてみました。当然のことだと思いますが、詰まることなく for 文と while 文は書くことができました。しかし、1 行で Fizz buzz を実現させることはできませんでした 😇

ループカウンタの i 変数が嫌い

略称はコードを読む時の認知負荷を高めてしまうので、個人的にループカウンタの i 変数も嫌いです。ループカウンタとは、プログラミング言語において繰り返し処理を制御する変数のことです。ループカウンタを i 変数にすることはただの慣習です。そのきっかけは最初の高級言語の FORTRAN と言われているそうです。

当時のFORTRANではデフォルトで変数の型宣言が不要あり、アルファベットI~Nの1文字の変数名が整数型、それ以外は実数型という言語仕様になっていました。

FORTRANはもともと理工系向きの言語として設計されており、数学の式の習慣に則って整数にI,J,Kが採用されていたとしても不思議ではありません。

@yaju『なぜループカウンタ変数のほとんどに “i”が使用されるのか?』Qiita

正式なルールがあるわけではないので、本記事ではループカウンタを i ではなく index と integer と命名します。

Fizz buzz

一般的なルールを採用します。

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

青木靖『どうしてプログラマに・・・プログラムが書けないのか?』Jeff Atwood
  • 1 ~ 100 までの数字を表示する
  • 3 の倍数の時は数字ではなく Fizz と表示する
  • 5 の倍数の時は数字ではなく Buzz と表示する
  • 3 と 5 の両方の倍数の時は数字ではなく Fizz buzz と表示する

for 文で Fizz buzz

真っ先に思い付いた Fizz buzz は for 文でした。

for index in range(1, 101):
    if index % 3 == 0 and index % 5 == 0:
        print('Fizz buzz')
    elif index % 3 == 0:
        print('Fizz')
    elif index % 5 == 0:
        print('Buzz')
    else:
        print(index)

while 文で Fizz buzz

次に思い付いた Fizz buzz は while 文でした。

integer = 1
while integer <= 100:
    if integer % 3 == 0 and integer % 5 == 0:
        print('Fizz buzz')
    elif integer % 3 == 0:
        print('Fizz')
    elif integer % 5 == 0:
        print('Buzz')
    else:
        print(integer)
    integer += 1

for 文よりも while 文の Fizz buzz の方が好きです。その理由は range(1, 101) と書かなくて良いからです。1 ~ 100 の数字を表示するために 1, 101 と引数に書かなければならないことは少し違和感があります。while 文で書けば、101 と書く必要はないです。なので、for 文よりも while 文の Fizz buzz の方が好きです。

1 行で Fizz buzz

ぶっちゃけ、思い付かなかったです 😇

おまけ

Wikipedia の Fizz Buzz ページの関連項目が面白い(笑)

世界のナベアツ「3の倍数と3のつく数のときだけアホになる」という、Fizz Buzzと同様の考えのギャグを行っている。

『Fizz Buzz』Wikipedia

おわりに

Twitter で間接的に煽られて、焦りながら Fizz buzz を書きました。問題なく簡単な for 文と while 文を書けて良かったです(笑)他にも色々な書き方があると思うので、気が向いたら追加します。ほとんど詰まることなく楽しみながら 1 行の Fizz buzz を書くことができるソフトウェアエンジニアに憧れます!

著者

イセ ハヤト

ソフトウェアエンジニア

1994年、愛知生まれ富山育ち東京在住。中学時代、オンラインゲーム『メイプルストーリー』に熱中。課金するためにアフィリエイトを始める。大人買い出来るくらいにお金を稼ぎ、次第にゲームではなくインターネット自体に魅了される。大学時代、インカレプログラミングサークル『RE:CODE』で 2 人のエンジニアと出会う。UI/UX デザイナーとして彼らと手を組み、5 つのウェブサービスを開発。鳴かず飛ばずの結果に責任を感じ、チーム解散。プロダクトの成功確率を飛躍的に高められる人材に憧れを抱き、プロダクトマネージャーを志す。過去の開発経験からエンジニアリングの知識の乏しい人がウェブサービスを率いることの危険性を感じ、現在はソフトウェアエンジニアとして活動中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です