SHOW:
|
|
- or go back to the newest paste.
| 1 | ;; -*- coding: utf-8; mode: common-lisp -*- | |
| 2 | ;; num-roman.lisp | |
| 3 | ||
| 4 | - | (setq matriz-numerales |
| 4 | + | (defun numeral (digito posicion) |
| 5 | - | (make-array '(10 4) |
| 5 | + | (setq matriz-numerales |
| 6 | - | :initial-contents '(("" "" "" "" )
|
| 6 | + | (make-array '(10 4) |
| 7 | - | ("I" "X" "C" "M")
|
| 7 | + | :initial-contents '(("" "" "" "" )
|
| 8 | - | ("II" "XX" "CC" "MM")
|
| 8 | + | ("I" "X" "C" "M")
|
| 9 | - | ("III" "XXX" "CCC" "MMM")
|
| 9 | + | ("II" "XX" "CC" "MM")
|
| 10 | - | ("IV" "XL" "CD" "")
|
| 10 | + | ("III" "XXX" "CCC" "MMM")
|
| 11 | - | ("V" "L" "D" "")
|
| 11 | + | ("IV" "XL" "CD" "")
|
| 12 | - | ("VI " "LX" "DC" "")
|
| 12 | + | ("V" "L" "D" "")
|
| 13 | - | ("VII" "LXX" "DCC" "")
|
| 13 | + | ("VI " "LX" "DC" "")
|
| 14 | - | ("VIII" "LXXX" "DCCC" "")
|
| 14 | + | ("VII" "LXX" "DCC" "")
|
| 15 | - | ("IX" "XC" "CM" "")) ))
|
| 15 | + | ("VIII" "LXXX" "DCCC" "")
|
| 16 | ("IX" "XC" "CM" "")) ))
| |
| 17 | ||
| 18 | (aref matriz-numerales digito posicion) ) | |
| 19 | - | (setq cad-num (reverse (princ-to-string n))) |
| 19 | + | |
| 20 | - | (loop for pos from (- (length cad-num) 1) downto 0 do |
| 20 | + | |
| 21 | - | (setq num (parse-integer (string (elt cad-num pos)))) |
| 21 | + | |
| 22 | (setq cadena-num (reverse (write-to-string n))) | |
| 23 | (loop for pos from (- (length cadena-num) 1) downto 0 do | |
| 24 | - | (aref matriz-numerales num pos))) ) |
| 24 | + | (setq digito (parse-integer (string (elt cadena-num pos)))) |
| 25 | (setq retval (concatenate 'string | |
| 26 | retval | |
| 27 | (numeral digito pos))) ) | |
| 28 | retval ) |