Sha256: 5c9e92ad1e0b939deb641b74aa6a9b33cd61af580a727be679a8d138e8687e4a

Contents?: true

Size: 629 Bytes

Versions: 242

Compression:

Stored size: 629 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

242 entries across 242 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.179 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.178 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.177 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.176 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.175 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.174 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.173 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.172 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.171 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.170 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.169 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.167 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.166 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.165 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.164 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.163 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.162 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.161 tracks/pony/exercises/roman-numerals/example.pony
trackler-2.2.1.160 tracks/pony/exercises/roman-numerals/example.pony