トレハン暗号解読ルーチンメモ(ローマ数字編)
ネタらしいネタが拾えなかった管理人です orz流石に更新をサボるのもアレかなと思ったので、昨日の独言で書いたローマ字解読の手法について公開。注意)管理人が適当に考えた解法なので、もっと効率が良い方法が有る可能性有り。1:照合文字パターンはI,V,X,L,Cの五パターンのみ。基本となるのはI=1,V=5,X=10,L=50,C=100の5パターンのみ登録。2:入力文字を一文字づつ分解。例えば、XVIII(18)ならX+V+I+I+Iなので10+5+1+1+1で18と一文字づつ照合させて足し算すれば簡単に出て来る。ここまでは簡単に解けると思うが、ネックになるのは同じ文字を4つ以上連続で並べることは出来ない為、特殊な表記になる数字。例を挙げれば、IV(4)やIX(9),XL(40)やXC(90)の処理なのだが…此処で思いついたのが昨日のヒントにも書いた文字の並び。IVだとI+Vでそのまま足せば6となるが、実際には4。なので、変数xを使って帳尻合わせすると4=1+(5+X)で答えはX=-2そして、IX(9)の場合でも、9=1+(10+X)⇒1+(10-2)=1+8=9長々と書くのも面倒なので条件処理で書くと下記の通り。・一文字目は普通に照合・二文字目以降は前の文字と比較して大きい場合は現在の数値-2×一文字前の数値、 それ以外ならそのまま加算仮にXCIX(99)で、この計算を行った場合は下記の計算結果に。XCIX=10+(100-2×10)+1+(10-2×1)=10+80+1+8=99あくまでローマ数字の数字変換用演算処理の部分だけ抜粋して解説して見たが、今回の解説が誰かの役に立てたなら幸い、と言った所で今日は締め。