11 lines
375 B
APL
11 lines
375 B
APL
|
|
toRoman←{
|
|||
|
|
⍝ Digits and corresponding values
|
|||
|
|
ds←((⊢≠⊃)⊆⊢)' M CM D CD C XC L XL X IX V IV I'
|
|||
|
|
vs←1000, ,100 10 1∘.×9 5 4 1
|
|||
|
|
⍝ Input ≤ 0 is invalid
|
|||
|
|
⍵≤0:⎕SIGNAL 11
|
|||
|
|
{ 0=d←⊃⍸vs≤⍵:⍬ ⍝ Find highest digit in number
|
|||
|
|
(d⊃ds),∇⍵-d⊃vs ⍝ While one exists, add it and subtract from number
|
|||
|
|
}⍵
|
|||
|
|
}
|