Sha256: 2f59c4270d31cb673baa19f50b11dd2618fd21a49c6195b408f1ccff03c90294

Contents?: true

Size: 767 Bytes

Versions: 396

Compression:

Stored size: 767 Bytes

Contents

object RomanNumeral {
    private val numeralValues = listOf(
            Pair(1000, "M"),
            Pair(900, "CM"),
            Pair(500, "D"),
            Pair(400, "CD"),
            Pair(100, "C"),
            Pair(90, "XC"),
            Pair(50, "L"),
            Pair(40, "XL"),
            Pair(10, "X"),
            Pair(9, "IX"),
            Pair(5, "V"),
            Pair(4, "IV"),
            Pair(1, "I")
    )


    private tailrec fun fromNumber(n: Int, numerals: String): String {
        val numeralPair = numeralValues.find { it.first <= n }
        if (numeralPair != null) {
            return fromNumber(n - numeralPair.first, numerals + numeralPair.second)
        }

        return numerals
    }

    fun value(n: Int) = fromNumber(n, "")
}

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.179 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.178 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.177 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.176 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.175 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.174 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.173 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.172 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.171 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.170 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.169 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.167 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.166 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.165 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.164 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.163 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.162 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.161 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.160 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt