Advertisement
alcidesfp

num-roman.rkt

Feb 2nd, 2012
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.90 KB | None | 0 0
  1. ;; -*- coding: utf-8; mode: scheme -*-
  2. ;; num-roman.rkt
  3. #lang racket
  4.  
  5. (provide numeral)
  6.  
  7. (define (numeral digito posicion)
  8.   (let ((matriz-numerales
  9.          #(#("" "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX")
  10.            #("" "X" "XX" "XXX" "XL" "L" "LX" "LXX" "LXXX" "XC")
  11.            #("" "C" "CC" "CCC" "CD" "D" "DC" "DCC" "DCCC" "CM")
  12.            #("" "M" "MM" "MMM"))))
  13.     (vector-ref (vector-ref matriz-numerales posicion) digito) ))
  14.  
  15. (provide num-roman)
  16.  
  17. (define (num-roman arabigo)
  18.   (let ((retval "")
  19.         (cadena-num '())
  20.         (longitud 0)
  21.         (digito 0))
  22.  
  23.     (set! cadena-num (reverse (string->list (number->string arabigo))))
  24.     (set! longitud (length cadena-num))
  25.  
  26.     (for ((posicion longitud))
  27.          (set! digito (- (char->integer (list-ref cadena-num posicion)) 48))
  28.          (set! retval (string-append (numeral digito posicion) retval)) )
  29.  
  30.     retval ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement