Sha256: f4585f51686f96791f54f14febe5d91631429e9da1547526de456407c7444198

Contents?: true

Size: 673 Bytes

Versions: 59

Compression:

Stored size: 673 Bytes

Contents

import scala.collection.immutable.ListMap

class RomanNumeral(n: Int) {
  private def numeralValues = ListMap(
    1000 -> "M",
    900  -> "CM",
    500  -> "D",
    400  -> "CD",
    100  -> "C",
    90   -> "XC",
    50   -> "L",
    40   -> "XL",
    10   -> "X",
    9    -> "IX",
    5    -> "V",
    4    -> "IV",
    1    -> "I"
  )

  private def fromNumber(n: Int, numerals: String): String = {
    numeralValues.find(_._1 <= n) match {
      case Some((threshold, numeral)) => fromNumber(n - threshold, numerals + numeral)
      case None => numerals
    }
  }

  val value = fromNumber(n, "")
}

object RomanNumeral {
  def apply(n: Int) = new RomanNumeral(n)
}

Version data entries

59 entries across 59 versions & 1 rubygems

Version Path
trackler-2.0.6.3 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.6.2 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.6.1 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.6.0 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.18 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.17 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.16 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.15 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.14 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.13 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.12 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.11 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.10 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.9 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.8 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.7 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.6 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.5 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.4 tracks/scala/exercises/roman-numerals/example.scala
trackler-2.0.5.3 tracks/scala/exercises/roman-numerals/example.scala