ぺやろぐ

・・・死は避けられない。あんたも死ぬし、俺だって死ぬ。みんないつか死ぬ。・・・だが、今日じゃない! by 映画「バトルシップ」

FizzBuzz問題

人気記事セレクション

スポンサーリンク

ほんとにすぐできたからさっそく公開。

まず、FizzBuzz問題について

wikiより

プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は 「Fizz」(Bizz Buzz の場合は 「Bizz」)、5で割り切れる場合は 「Buzz」、両者で割り切れる場合は 「Fizz Buzz」 (Bizz Buzz の場合は 「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。


というゲームをプログラムで書いたらどうなるかっていうのが今回の記事のネタ。

またもやwikiより

このゲームをコンピュータ画面に表示させるプログラムとして作成させることで、コードがかけないプログラマ志願者を見分ける手法を Jeff Atwood が FizzBuzz問題 (FizzBuzz Question)として提唱した。その提唱はインターネットの様々な場所で議論の対象になっている。


だそうです。

程度の差はあれど、動くものレベルなら作れるでしょうって思いきや、できない人がちらほらいるらしい。

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

このままだとまぁ、いろいろ気になる部分はあるわけだけどもあえてスルーします。(あくまで遊びなので

で、こちらが私が書いたコード
fizz1buzz

実行結果↓
fizz1buzzcon
fizz1buzzcon2

とまぁ、こうなります。

本当に動くものレベルならこれでいけます。
少し改造したものがこちら
fizz2buzz
引数を変えれば、FizzBuzzの出力位置が変わるようにしました。
あと、出力する数字の数も。

実行結果↓
fizz2buzzcon
fizz2buzzcon2
fizz2buzzcon3

4の倍数と7の倍数で文字に変わってますね。
出力している数も120まで増えてます。

もっと、いろいろ制約つけたりあえてめんどくさい処理の仕方で書いてみたりなどなどネットを探せば出てきます。

個人的なわざわざシリーズとしてはStrategyパターン使ってみたら面白そうな、ただめんどそうな感じがしてます。

これを研修終わりの新人にさせてみると、個性が見られて楽しそうです。

最後に、コードの拙さについては遊びということで目をつぶっていただきたいです……。(久々にコード書くんだもの、ちかたないね)
ネットをさ迷って、自分の勉強不足を痛感してるので、これからに期待ってことでなにとぞ(m´・ω・`)m

じゃあの