コンパイラとゴルフ

anarchy golfのサーバーが新しくなったので、コンパイラのバージョンも当然変わってた。
GCC4.1.2からGCC4.3.4になってたのだけど、この影響で動かなくなったコードも出たみたい。
googleの55Bのコードを通してなかったので、通しておこうと思ったら動かなくなってた。
よって、現時点での最短コードは私のコードということになる。ばんざーい!
なんて言ってもなんか切ない・・・
ゴルフをする上で、コンパイラのバージョンによって動く動かないを把握しておくのも大事だなと思った。

Greatest Common Divisor

その名の通り最大公約数を求めろっていう問題。
テストケースが多ければ普通に計算した方が短くなるかもしれないけど、いつものように答えを埋め込んだものを提出。
特に工夫もなく56Bだけど、同じようにずるしてると思われるコードが44Bってどういうことだろう。乱数?

main(i)
{
  gets(&i);
  i = i & 15;
  puts(i > 2 ? i > 5 ? "32768" : "14" : "3");
}

reverse lines

入力された文字列をひっくり返して出力しろっていう問題。
ひっくり返すということで、再帰で行うのが短くなりそうと思いmain再帰で行くことに。
そのアプローチが正しかったようで41Bまで縮めることができた。
ゴルフをする場合でも、ローカル変数が役に立つこともあるのだということを学習した。


46B版

main()
{
  int c[99];

  gets(c) && main();
  *c && puts(c);
}

41B版

main()
{
  int c[99];

  gets(c) && main() & puts();
}