Sha256: da086a7d4652d18daac7854fe472a3e4906cc113bdd20afeed1379955f7e5981

Contents?: true

Size: 641 Bytes

Versions: 87

Compression:

Stored size: 641 Bytes

Contents

use "collections"

primitive RomanNumerals
  fun apply(n: USize): String ? =>
    if n == 0 then
      return ""
    elseif n >= 4000 then
      error
    end

    let numerals: Array[(USize, String)] = [
      (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")
    ]

    let str = recover String end
    var n' = n
    for (arabic, roman) in numerals.values() do
      while n' >= arabic do
        str.append(roman)
        n' = n' - arabic
      end
    end
    str

Version data entries

87 entries across 87 versions & 1 rubygems

Version Path
trackler-2.0.8.54 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.53 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.52 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.51 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.50 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.49 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.48 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.47 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.46 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.45 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.44 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.43 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.42 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.41 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.40 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.39 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.38 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.37 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.36 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.0.8.35 tracks/pony/exercises/roman-numerals/example.pony