2010年4月11日日曜日

FizzBuzz

FizzBuzzという言葉遊びをプログラムするのが周りで流行っていたので、ちょっとやってみた。

FizzBuzzのルール



  1. 1から順番に自然数を数えていく

  2. 3の倍数の時はFizzと出力する

  3. 5の倍数の時はBuzzと出力する

  4. 2と3の両方の条件に当てはまる時はFizzBuzzと出力する

  5. 2~4の全ての条件に当てはまらない場合はそのまま数字を出力する


私のコード


これは少し縛りを加えています。
乗算、除算、剰余算の演算子を使わない。
if文で実行される文は複文を認めない。
printf関数は2つまで

#define MAXNUM 100
main()
{
int i = 0,j = 0,k = 0;
while(i < MAXNUM)
{
++i;++j;++k;
if(j > 3)j = 0;
if(k > 5)k = 0;
if(j && k)
printf("%d\n",i);
else
printf("%s%s\n",j ? "" : "Fizz",k ? "" : "Buzz");
}
}

更に、printf関数を1つにして、main関数以外の大括弧を外してみたのがこちら

main()
{
int i,j,k;
for(i = j = k = 1;i <= 100;++i,j = j == 2 ? 0 : ++j,k = k == 4 ? 0 : ++k)
printf("%s%s%d%s\n",j ? "" : "Fizz",k ? "" : "Buzz",j && k ? i : 0,j && k ? "" : "\b ");
}


今日は後輩にもやらせてみたので、もしかしたら後でそれらのコードを載せるかもしれません。

2 件のコメント:

  1. ナベアツ専用アプリ開発?!

    返信削除
  2. [...] この記事は一つ前の記事の続きです。 [...]

    返信削除