さぼり気味な最近

ちょっとゴルフさぼっていた。
あまりよろしくない傾向なので頑張らないと。

99 shinichiros of hamaji

アドレス入れるだけならわざわざchar型に入れなくてもいいじゃない、ということで型宣言を外した。
後はこのやり方でやるならon the wallの部分は埋め込んでしまった方が短くなったのでそのように。6B縮んで254B。
流石にそろそろやり方を変えようかな・・・

 *s = " shinichiroes of hamaji", *u = " shinichiro of hamaji";
i = 99;

main()
{
  for(; i;)
    printf("%d%s on the wall, %d%s.\n%s, %d%s on the wall.\n\n",
           i--, i > 1 ? s : u, i, i > 1 ? s : u,
           i > 1 ? "Take one down and pass it around" : "Go to the store and buy some more",
           i > 1 ? i - 1 : 99, i - 2 ? s : u);
}

invert case

小文字を大文字に、大文字を小文字に変換しろっていう問題。
まとめて変換する方法がわからなかったので、地道に1文字づつ変換した。
おかげで大分コードが長くなってしまって55B。
まとめて変換する方法を見つけないと、これ以上は大幅に縮められそうにないなあ。

main(i)
{
  for(; (i = getchar()) > 0;)
    putchar(i & 32 ? i - 32 : i + 32);
}

入力がfoobarの変形型しかないので答えを埋め込んだものも試した。
短くなるかと思ったけど逆に長くなるという結果に。記録は63B。

main(i)
{
  gets(&i);
  puts(i & 32 ? "FOOBAR" : i & 8192 ? "fOObar" : "foobar");
}