10 lines
375 B
APL
10 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
|
||
}⍵
|
||
}
|