制限付 PHP による FizzBuzz 設問編

経緯(ヒント)をまず提示する。
 
まずは昨年末に書いた以下の記事。

C#とか。 - Grim Saga Project 別館:れびんの勉強部屋 - FizzBuzz問題・解答編:
 http://d.hatena.ne.jp/levin_gsp/20071109/1194579778

 
この中で深く考えずに三項演算子を使って撃沈した。
 

<?php
for($i=1;$i<=100;$i++){
  echo $i%15==0?'FizzBuzz ':$i%5==0?'Buzz ':$i%3==0?'Fizz ':$i.' '; /* 整数値かFizzしか表示しない… */
}
?>

 
その原因が昨日判明した。
 

梶本裕介の日記 - 2008年09月03日:
 http://d.hatena.ne.jp/uskz/20080903/p6

 
左結合だったのだ。
キモい。
キモすぎる。
 
昨年末の記事で書いたコードがどう解釈されたか、詳解してみる。
 

<?php
for($i=1;$i<=100;$i++){
  echo ((( $i % 15 == 0 ) ? 'FizzBuzz ' : $i % 5 == 0 ) ? 'Buzz ' : $i % 3 == 0 ) ? 'Fizz ' : $i . ' ' ; /* 整数値かFizzしか表示しない… */
}
?>

 
これじゃあ意図通り動くわけがない。
そこで昨日修正記事を書いた。
 

C#とか。 - Grim Saga Project 別館:れびんの勉強部屋 - 三項演算子の解釈要注意:
 http://d.hatena.ne.jp/levin_gsp/20080903/1220445755

 
単純に()で条件判断処理を優先付けした。
 

<?php
for($i=1;$i<=100;$i++){
  echo ($i%15==0?'FizzBuzz ':($i%5==0?'Buzz ':($i%3==0?'Fizz ':$i.' ')));
}
?>

 
これで一応の解決をみた。
が、なんか悔しい。
 
ここまでが経緯(ヒント)。
次が設問。
 
 
 

【問題】
1から100までの数を表示するプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と表示。
5の倍数のときは「Buzz」と表示。
3と5両方の倍数の場合には「FizzBuzz」と表示すること。
 
解答言語は PHP とする。
また、以下のテンプレートを使用すること。
 
for($i=1;$i<=100;$i++){
echo ### FreeCode ###;
}
 
### FreeCode ### 部分を三項演算子を用い、()を用いずにコーディングして解を示せ。
 

                  • -

つまり PHP三項演算子を使って、()で優先順位付せずに解いてネ、ってこと。

 
もちろん私自身は解いてみたわけなので、PHPキモい嫌い、などと言わずに考えてみていただきたい。
頭の体操、頭の体操。
 
解答は一週間後をメドに掲載する。