http://ja.wikipedia.org/wiki/Fizz_Buzz

社内でFizzBuzz大会をやりました。

##はじめに 社内のチームでFizzBuzz大会をやろう、という話自体は去年の秋ごろからあって 年が明けて、今日開催しました。

##FizzBuzz大会要綱

###大会参加者

  • 15名

###ルール ####ルールその1 引数n(正の整数)が渡されたときに 1~nまでのFizzBuzzを表示する関数を書きなさい。表示形式はFizzBuzzであるとわかれば何でも可 ####ルールその2 実装言語は何でもOK ####ルールその3 何度(何種類)回答してもOK

※ただし、評価対象は1つだけ ####ルールその4 テストコードもあるとイイネ! ####ルールその5 他人のコードを盗まない

※”FizzBuzz”をググってコピペするのも、もちろんNG

※言語のリファレンスを見る、技術書を見るのはOK ####ルールその5 制限時間は、30分 ###大会タイムスケジュール

  • 10:00 概要説明
  • 10:10 環境準備・コーディング開始
  • 10:40 コーディング終了
  • 10:45 LT(コードのロジック説明等)
  • 11:35 集計
  • 11:40 表彰

###評価方法

  • 1人持ち時間3分でロジックを解説。LT形式
  • これはスゴイと思った順に、3点、2点、1点を投票。
  • 合計点数で”Most IKETERU Programer”:MIPを決定

##やって、どうなった? 実装言語は縛らなかったので、いろいろなFizzBuzzが出てきました。

  • PHP
  • Java
  • JavaScript
  • C言語
  • シェルスクリプト
  • CSS
  • バッチ

制限時間は、結局10分延長。 それでも何人かは書きあがらなくて、ロジックの説明のみ参戦。 いつもはブラウザで動作させているものを、 コマンドラインから動かすときに「あれ引数どうやってとるんだっけ?」 みたいなところが嵌りポイントっぽかったです。

###面白かったFizzBuzz 個人的に、おぉっと思ったものがいくつか、、

####CSSでFizzBuzz

li:nth-child(3n+1){
   color:#f9c;
}

↑で、3の倍数の色が#f9cになるっていう。 これと同じパターンで、5の倍数・3と5の倍数の時に色が変わるって。

CSS使って、FizzとBuzzを色の違いで表現するとはっ!! 完全に盲点でした。

これ文字列でFizzもBuzzも出力してなくて、見た感じわかりづらいんですけどね。。すごかったですw

###Chrome上でFizzBuzz

var fizzbuzz = function(n) {
	return (n % 15) ? (n % 3 ? ( n % 5 ? n : "Buzz") : "Fizz") : "FizzBuzz";
};

まず1行でFizzBuzzしてるところが、Cool!! そして何より、LTで ChromeのJavaScriptコンソール上で実行して見せるところがすげぇっ!!って感じw

##自分のFizzBuzz解答 もちろん私はScalaで書きました。

def fizzbuzz(args:Int){
	(1 to args) map{ i =>
		(i%5,i%3) match{
			case (0,0) =>"FizzBuzz" 
			case (_,0) =>"Fizz" 
			case (0,_) =>"Buzz"
			case _ => i
			}
		} foreach println
}
fizzbuzz(15)

自分なりのポイントとしては、

  • 剰余算の結果を”== 0”と比較するのは、なんかイケてない
  • 折角Scalaなので、Mapとパターンマッチを使ってみる

もっと短く書けるだろうけど、今はこれが精一杯。

##最後に 実際にFizzBuzzを書くようなシーンは仕事では出会わないだろうけど、 「ここをこうしたらもっとカッコいい!」ってワクワクできるのはいいですよね

もっとカッコいいコードが書けるようになりたいなぁと思いました