新しいプログラミング言語の学習に Code Golf がちょうどいい
プログラミングの問題をいかに短いコードで書くかを競うhttp://codegolf.com/というサイトがあるんだけど、短くていい感じの問題がいっぱいあるので、新しいプログラミング言語をおぼえたいなんてときにただ解いてみるだけでも勉強になるんじゃないかというおはなし。
ゴルフサイトは他にもhttp://codegolf.stackexchange.com/とかhttp://golf.shinh.org/とか見つけた。
今 PHP の勉強中で、FizzBuzzを10通りくらい試したところで飽きてたんだけど、ゴルフのおかげでもうちょっと続けられそう。
最後にhttp://codegolf.com/saving-time:この問題を解いてみたコードを晒してみる。
<?php list($h, $m) = explode(':', fgets(STDIN)); $h = $h % 12; $m = (int)($m / 5); for ($i = 0; $i < 12; $i++) { $c[$i] = $i-$h||$i-$m ? $i-$h ? $i-$m ? o : m : h : x; } $f = <<<EOL %9s %5s%8s %2s%14s %s%16s %2s%14s %5s%8s %9s EOL; printf($f, $c[0], $c[11], $c[1], $c[10], $c[2], $c[9], $c[3], $c[8], $c[4], $c[7], $c[5], $c[6]); ?>
全然短く出来なかったけど、未定義の定数が定数名の文字列を返すのをおぼえますた。