カメヲラボ

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

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%11=3
58%11=3
��( ̄□ ̄)

88を63で割った余りは25となり、25も58も11で割った余りが3、つまり読み込んだ文字コードを%63してしまえば、'?'の判定が出来る上に、'X'が出てきても問題なく計算できてしまう!!


これを使えばかなりコード短縮が出来るはずだ!