文系エンジニア大学生の技術ブログ

主にエンジニア向けにITやプログラミングなどの技術系と大学生向けに休学、留学、海外生活、トビタテ留学、長期インターンに関する記事を書いています。

プログラミング初心者が知っておいて損はないFizzBuzz問題を解いてみたよ。

<

f:id:daikiyano:20181031220035p:plain

今回は、プログラミング初心者、これから学習を始めようと思っている方を対象に知っておいて損はないFizzBuzz問題についてご紹介したいと思います。

FizzBuzz問題とは?

Fizz Buzz - Wikipedia

FizzBuzzはもともと英語圏で飲み会などの場で行われるゲームです。 参加者は円になって座り、最初の人は1を唱えて隣の人は次の数字を発言していきます。しかし、3の倍数の時には「Fizz」を唱え、5の倍数の時には「Buzz」、3と5の倍数の時には「FizzBuzz」を数字の代わりに発言しないといけないルールです。間違えて発言したり、発言出来なかった人は脱落していくゲームです。日本でいう山手線ゲームとかほうれん草ゲームとかですね。

このFizzBuzzゲームをプログラマーのテスト用に作られたのがFizzBuzz問題です。 エンジニアやプログラマー志願者がプログラムが書けるどうか試すときに使われる問題の一つとして使われているようです。 と言っても、インターンを含めエンジニア職として面接を受ける際にFizzBuzz問題を解かされるというケースはほとんどなさそうです。しかし、FizzBuzzにはプログラミングに必要とされる以下の基本的な要素が含まれていますので、覚えておいても損はありません。

  • 順次・・・上から順番に処理を実行する。→プログラムは基本的に上から実行されていくよ〜。
  • 反復・・・処理を繰り返す。→プログラムをループさせる。for文while文など。
  • 分岐・・・条件によって分岐を行い違う結果を表示させる。→if文など。

面接で解かされるケースはほとんどないと述べておきながら、私自身fizzbuzzチックな問題を解かされたことはあります。 ループや条件分岐を使って条件通りに文字を表示させられるかという簡単な問題でした。

このFizzBuzz問題については、プログラミングオンライン学習サービス「progate」のrubyやPHPなどのカリキュラム中でも解く機会があります。 是非、興味があれば試してみてください。

prog-8.com

www.for-engineer.life

FizzBuzz問題を解いてみたよ

先月の下旬に、今年の夏からエンジニアとして転職した友人と箱根旅行に行ったのですが、夜中にビールを飲みながらFizzBuzz問題を解いてみました。 いざ、やってみると若干悩むという笑

FizzBuzz問題には関数を作って表示させるやり方など複数ありますが、今回は通常のルール

  • 1から100までの数字を表示させる
  • 3の倍数の時には数字の代わりに「Fizz」を表示させる
  • 5の倍数の時には数字の代わりに「Buzz」を表示させる
  • 3と5両方の倍数の時には数字の代わりに「FizzBuzz」と表示させる

で行いたいと思います。 今回は、私の使用したことのある言語「Ruby」、「PHP」、「python」で解いてみました!

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

#Ruby
for i in 1..100
  if i % 3 === 0 && i % 5 === 0
    puts "fizzbuzz";
  elsif i % 3 === 0
    puts "fizz";
  elsif i % 5 === 0
    puts "buzz";
  else
    puts i
  end
end
#PHP

<?php
for ($i=1; $i < 100 ; $i++) {
  if (($i % 3 === 0) && ($i % 5 === 0)) {
   echo "fizzbuzz\n";
 } elseif ($i % 3 === 0) {
   echo "fizz\n";
 } elseif ($i % 5 === 0) {
   echo "buzz\n";
 } else {
   echo $i."\n";
 }
}
?>

このような感じでFizzBuzz問題を解けるようになるとプログラミング文法に触れることが出来ます。 プログラミング初心者の方は是非FizzBuzz問題に挑戦することをおすすめしますし、普段エンジニアをやられている方も初心に戻ってFizzBuzz問題を解いてみるのも ありかなあと思いました。エンジニアの方には物足りない問題なので、縛りなどを設けたら難易度も上がり面白そうです。 以上、FizzBuzz問題についてでした!