Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;; -*- coding: utf-8; mode: scheme -*-
- ;; num-roman.rkt
- #lang racket
- (provide numeral)
- (define (numeral digito posicion)
- (let ((matriz-numerales
- #(#("" "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX")
- #("" "X" "XX" "XXX" "XL" "L" "LX" "LXX" "LXXX" "XC")
- #("" "C" "CC" "CCC" "CD" "D" "DC" "DCC" "DCCC" "CM")
- #("" "M" "MM" "MMM"))))
- (vector-ref (vector-ref matriz-numerales posicion) digito) ))
- (provide num-roman)
- (define (num-roman arabigo)
- (let ((retval "")
- (cadena-num '())
- (longitud 0)
- (digito 0))
- (set! cadena-num (reverse (string->list (number->string arabigo))))
- (set! longitud (length cadena-num))
- (for ((posicion longitud))
- (set! digito (- (char->integer (list-ref cadena-num posicion)) 48))
- (set! retval (string-append (numeral digito posicion) retval)) )
- retval ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement