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.119 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.118 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.117 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.116 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.115 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.114 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.113 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.111 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.110 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.109 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.108 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.107 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.106 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.105 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.104 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.103 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.102 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.101 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.100 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt
trackler-2.2.1.99 tracks/kotlin/exercises/roman-numerals/.meta/src/reference/kotlin/RomanNumeral.kt