ISBN(1)
ロベールさんが参戦したおかげで、あっという間にコードは短縮された。おそらく101byteが最短ではないかと思われる。参加している人はよくわかると思うが、この問題は120byteくらいでも相当難しい。ここでは、120byteを切るために必要なテクニックを、惜しげもなく公開していこうと思う。
超絶テクニック(その1)
まず前回でも書いたように、読み込んだ文字コードをそのまま合計してしまうという方法。これは必須のテクニックだ。それはなぜか。
読み込む可能性のある文字コードをすべて書き出すと、
'0'=48
'1'=49
:
'9'=57'?'=63
'X'=88
この問題を解いていて、「あー、'X'が58だったらナァ(;´д`)」と、皆一度は思ったはずだ。一瞬諦めそうになるのだが、ここに神がいた。'?'である。'?'が63であったのはまさにミラクル。
'X'=88をそのまま11で割ると、88%11=0で割り切れてしまうが、
88を63で割った余りは25となり、25も58も11で割った余りが3、つまり読み込んだ文字コードを%63してしまえば、'?'の判定が出来る上に、'X'が出てきても問題なく計算できてしまう!!
88%63=2525%11=3
58%11=3
��( ̄□ ̄)
これを使えばかなりコード短縮が出来るはずだ!