Skip to content

Instantly share code, notes, and snippets.

@zerosum
Created February 20, 2013 14:47
Show Gist options
  • Select an option

  • Save zerosum/4996023 to your computer and use it in GitHub Desktop.

Select an option

Save zerosum/4996023 to your computer and use it in GitHub Desktop.
Project Euler: Problem 89
package euler.zerosum
import io.Source
object Euler0089 {
def main(args: Array[String]) {
val f = Source.fromFile("resources/roman.txt")
val roman = f.getLines.toList
f.close()
println(roman.mkString.length - roman.map(minimalize(_)).mkString.length)
}
private def minimalize(roman: String): String = {
// DCCCC -> CM
// CCCC -> CD
// LXXXX -> XC
// XXXX -> XL
// VIIII -> IX
// IIII -> IV
// minimalize後の文字数だけわかればよい。いずれも2文字に変換される
roman.replaceAll("DCCCC|CCCC|LXXXX|XXXX|VIIII|IIII", "**")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment