ファイル中の改行に注意

難しくないけど、ひたすらめんどくさいProblem89
条件分岐の嵐?でいったんローマ数字をアラビア数字にして、再度ローマ数字に変換する方針を採ってみた
(もっとエレガントな方法がありそうなもんだけど)

一応、デバッグのため、
ローマ数字(ファイルから読む)=>アラビア数字=>ローマ数字(最適化して(笑)新たに生成)=>アラビア数字
とやって、完全に一致することを確認。
ここまではひたすらめんどくさい作業だった。
(ほとんどがルーチンワーク

数回回してみてバグがあったので修正。
(ここまでは想定の範囲内

短縮できた文字数を数え上げるも正解にたどり着かない。
再度バグを発見して修正。

それでもおかしい。
すべての候補(ローマ数字)とにらめっこして、ようやく気がついた。
最終行は49なんだけど、なぜか48になっている。

これが根本原因だった。
(しかも、厄介なことにファイルから読む段で間違えているので前述チェックは通り抜ける
というおまけつき)

何故これがおきたかというと、ファイルはこんな感じになっていたから。

ローマ数字[改行]
ローマ数字[改行]
....
ローマ数字[EOF]

めんどいので行を丸ごと読んでから、最終キャラクタを(何も考えずに)捨てていた。
その結果、
XXXXVIIII

XXXXVIII
と読まれて処理されていた。

Ad hocにファイルを改変しようかと一瞬思ったけど、すんでのところで思いとどまった。
rsprit('\n')
で改行のみを削除することに修正。
ようやく解答にたどり着いた。

しょうもないバグで悩まされるなぁ。
(って自業自得なんだけど)