ローマ数字の変換

30分プログラム、その797。anarchy golf - Roman numeralにインスパイアされました。
ローマ数字をIntに変換します。面倒だったので、I,V,Xにしか対応していません。

使い方

scala> Roman.toInt("II")
res39: Int = 2

scala> Roman.toInt("IIV")
res40: Int = 3

scala> Roman.toInt("XIV")
res38: Int = 14

ソースコード

object Roman {
  val map = Map('I' -> 1,
		'V' -> 5,
		'X' -> 10)

  def toInt(s : String) : Int =
    s.foldRight((0,0)){ case (c, (m, current)) =>
      val n = map(c)
      if(n < m){
	(m, current - n)
      }else{
	(n max m, current + n)
      }
    }._2
}