カメヲラボ

主にプログラミングとお勉強全般について書いてます

487-3279(1)

人様のコードを短くするヤツ

http://d.hatena.ne.jp/kurimura/20060329
kurimuraさんが天才的なコードを連発しているので、自分のコードの前にkurimuraさんのコードを短くしとこう。。。
*.325の部分はさすがだ。私はgetchar()した時に%48して、.323としていたのだが、その場合は


n=getchar()%48
--n*.323-3
てなかんじでnを1減らしておかなければならないし、改行コードの判定でも無駄な記述が増えるので、kurimuraさんの方がちょっと短い。それはそうと、10000000とか10000はそれぞれ1e7,1e4とすることが出来る。但し%1e4とは書けないのでint型にキャストしておく必要がある。



m['rqA'],d,i,q=m,*r,v=1e4;
main(c){
for(;~(c=getchar());)
d=c<11?i--&&!++*(r=q+d*3):
c>45?d*10+(c/58?29+c*.325:c)-48:d;
for(;++c<1e7;)
(i=*(r=q+c*3)<<8>>8)>1&&
printf("%03d-%04d %d\n",c/v,c%v,d=i);
d||puts("No duplicates.");
}


出力部分もちょろっと弄って220バイトは切っているはず。Submitしてないけど大事な部分は変えてないので問題なく通るだろう。


・・・とかやってると自分のコードを晒すのが恥ずかしくなってくるナァ(*´д`)*1

*1:ちゃんと書くけどネ!