結局ゴルフ

あれこれ手を付けておきながら結局ゴルフしてる最近。
ほんの少しだけ成果が上がってるからモチベーションも上がるんだろうか。
他のこともやらないとなあ・・・

FizzBuzz

いつぞや流行ったFizzBuzz
当時も書いた覚えがあるけどゴルフするのは今回が初めて。
無駄が多いけどどうにも縮められそうなアルゴリズムが思いつかない。
あれこれ散々試して97Bでとりあえず落ち着いた。

i;

main()
{
  for(; i++ < 100;)
    i % 15 ? i % 3 ? i % 5 ? printf("%d\n", i) : puts("Buzz") : puts("Fizz") : puts("FizzBuzz");
}

途中で生まれたひどいコードも記念に。IOCCCで見たようなコードだなあ。101B。
と言ってもIOCCCのが芸術的なのは言うまでもなく。

i;

main()
{
  for(; i++ < 100; puts(""))
    !((!(i % 3) && printf("Fizz")) | (!(i % 5) && printf("Buzz"))) && printf("%d", i);
}

google

googleの検索結果のあれ。指定された数だけoを出力する問題。
strcatでやってたのをputcharにしたら結構縮んだ。69B。
しかし55Bってどうなコードになってるんだろう?
出力が1個で済んでるのは確実としても、どうやってそれをやってるんだ・・・

j;

main(i)
{
  for(scanf("%d", &i); j <= i;)
    putchar(j++ ? 'o' : 'g');
  puts("gle");
}