View difference between Paste ID: jUUTtyB3 and WALgBxxb
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 )