これ。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
かなり前に流行ってて、いかに美しく短く書くかが競われてた…けど。
その辺考えずにとりあえず書ければいいとしたらとりあえずこうかなぁ。
$i = 1;
while($i <= 100)
{
print (($i % 3) == 0 && ($i % 5) == 0) ? 'fizzbuzz' : ((($i % 3) == 0) ? 'fizz' : ((($i % 5) == 0) ? 'buzz' : $i));
$i++;
}
$iの初期値、分岐、公倍数の処理など美しくないの百も承知なんだけど、
まぁこの力業で所要1分。
whileを使ったのはそういえばオレってwhile使わないって思ってたから。
エントリ内での『プログラムを書く』がもっと高等なことを言ってるのかなーと思うけど、
動けば良いんであればこの程度で。
後はググればもっと色んな発想があるので興味がある方はどうぞ。
FizzBuzz問題 – Google 検索
まぁこれをやってみたからと言って、自分はプログラムが書ける!とかではないんだけどね。
出来て当たり前だし、もっと美しい発想を志向する態度でないと役には立たないし。
んーてかブクマ見ると美しいね。
gomisさんとかね。
perl -le ‘print”$_\r”,$_%3?””:Fizz,$_%5?””:Buzz for 1..100’
むしろこの美しさ(ないしは他の感慨)に共感するかどうかが、
プログラマかどうかっていう気もするなw
誰でもプログラマになれる新言語「FizzBuzz」、ECMA標準に : bogusnews