1Bが遠いよ

削れるペースが明らかに遅くなってきた最近です。
初期の方針を堅持しすぎなのかもしれない。
だけどもっといい手法も思いつかないというジレンマ。
いきなり頭がよくなったりなんてしないもんね、地道に頑張ろう。

Smileys Triangle

putsもstrcatもchar型で読み書きするようだから、箱だけint型で用意したら短くなるんじゃ?
と思ってやってみたら上手くいった。2B縮んで73B。トップまで後10B!
毎度思うけど三項演算子が綺麗じゃないよなあ・・・

c[99];

main(i)
{
  for(; i++ < 35;)
    puts(strcat(c, i < 3 ? ":" : i < 4 ? "-" : i < 5 ? ")" : "))"));
}

delete blank lines

getsで改行のみの行を読むと0が返ってくるという事を学習した。
てっきり改行文字の10が返ってくるものだと思っていたのだけど。
なので、数値の63(二進表記:00111111)でANDを取って、改行のみの行かそれ以外かを判定することに。
文字の@(二進表記:01000000)が先頭に来た行だけは、正しく判定されないテストケース依存のコードだけど、2B縮んで44Bになった。
255(二進表記:11111111)でANDを取るか、24bit左シフトすれば確実な判定ができるけど1文字多いんだよね・・・

c[99];

main()
{
  for(; gets(c);)
    *c & 63 ? puts(c) : 0;
}