« 今日のトマト2。 | Main | 今日の水族園。 »

2007年06月01日(金)

今日のFizzBuzz。

プログラムが出来ないプログラマが結構いるらしい。それに対する簡単な判定法がネット界隈でちょっと話題である。次をコーディングさせてみる、というもの。俗にFizzBuzz問題と云う。

1から100までを表示させる。ただし、3の倍数の場合は数字ではなく"Fizz"を、5の倍数の場合は"Buzz"を表示させよ。3の倍数かつ5の倍数の場合は"FizzBuzz"を表示させる。

これを2分でコーディングできたら、まあ合格というもの。ちょっと挑戦してみたが・・・

public class FizzBuzz {
 public static void main(String[] arg) {
   for (int i = 1; i <= 100; ++i) {
    System.out.println(
    (((i % 3) * (i % 5) != 0)? i:
     ((i % 3 == 0)? "Fizz": "") + ((i % 5 == 0)? "Buzz": "")));
   }
 }
} // JDK5

簡単は簡単だが、この路線だと条件分岐が3回も必要。あまり美しくないが、プリントが100回ならぶアホ解答よりはマシか。ネットで答え合わせしたら、フェルマーの小定理を使って条件分岐を全く使っていない例があってその発想に驚く。

ただ、これだけネットで情報が出回ってしまっては、もはやプログラムスキル判定法としては意味がないのだろうけど。

Posted by awa at 7:57.42
Categories: 雑記