カメヲラボ

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

ISBN(2)

とっても短い113Bコード

前回のテクニックを利用すると、かなりコードを短縮することが出来る。


a=11,b,s;
main(n){
for(;--a;b=n?b:a)s+=n=getchar()%63*a;
for(n=58;--n>47;)a=(s+n*b)%11?a:n;
puts(a?&a:b-1?"-1":"X");
}


最初のループを抜けるとaの値は0にセットされる。2番目のループで答えが0〜9ならその文字コードをaに入れる。ってな具合だ。getchar()%63が眩しい(´ー`)


しかしこのコードを書いてすぐに思った。「これはまだまだ削れるでないの?」と。その理由は・・・。


つづく