Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;; -*- coding: utf-8; mode: scheme -*-
- ;; $Id: num-roman.rkt,v 1.6 2012/02/04 21:44:33 alcides_fp Exp $
- #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 dec->list)
- (define (dec->list numero)
- (let ((retval '())
- (base 10)
- (residuo 0))
- (do ((cantidad numero)) ((= cantidad 0) retval)
- (set! residuo (remainder cantidad base))
- (set! retval (append retval (list residuo) ))
- (set! cantidad (quotient cantidad base)) ) ) )
- ;;------------------------------------------------------------------------
- (provide num-roman)
- (define (num-roman arabigo)
- (let ((retval "")
- (lista-cifras '())
- (longitud 0)
- (digito 0))
- (set! lista-cifras (dec->list arabigo))
- (set! longitud (length lista-cifras))
- (for ((posicion longitud))
- (set! digito (list-ref lista-cifras posicion))
- (set! retval (string-append (numeral digito posicion) retval)) )
- retval ))
- ;;------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement