Cで息抜き

C++C++らしく書けるようになるっていう課題もあるけど息抜きにCでゴルフ。
アルゴリズムを考えるだけなら言語は関係無いよね!

exit status

プログラム終了時のステータスを表示しろっていう問題。だと思う。
お得意の先頭の文字だけ見て判別する方法で決めうちする。それでも46B。
29Bって何やってるんだろう。乱数で運任せしたのかなあ。

main(i)
{
  gets(&i);
  puts(i & 2 ? "1" : i & 1 ? "255" : "0");
}

show the way

道案内をしろっていう問題。最初問題の意味がよくわからなかった・・・
多分、最初の1行目に目的地に行くまでのチェックポイントの数、続く10行にスタート地点からの地図が渡される。
0からスタートして1、2〜と辿って行くのに上下左右どう進めばいいか表示しろ、ということでいいんだと思う。
これも決めうちしようかと思ったけど、真面目に解いてみようとやってみた。今のところ160B。
二次元配列を使うか迷ったけども、物は試しで一次元配列に挑戦。
一次元配列でも11離れた所(改行コードが入るから)に別の行の同じ列が来るので気をつければ解ける。
93Bは決めうちっぽいけど131Bは普通に解いてる予感。どちらも凄いなあ。

char m[112];
c, j;

main(i)
{
  read(0, m, 111);

  for(; j + 48 <= *m; i++)
    c ? m[i] == j + 48 ? puts(c - i > 0 ? c - i > 9 ? "top" : "left" : c - i < -9 ? "bottom" : "right"),
    c = i, i = 1, j++ : 0 : m[i] == 48 ? c = i, i = j = 1 : 0;
}