Jump to content

Roman numerals/Encode: Difference between revisions

Improved RPL code with comments
(add RPL)
(Improved RPL code with comments)
Line 6,662:
</syntaxhighlight>
 
{{works with|Halcyon Calc|4.2.7}}
=={{header|RPL}}==
{| class="wikitable"
≪ '''IF''' DUP 5000 < '''THEN'''
! RPL code
0.1 + "" SWAP 1000 /
! Comment
'''WHILE''' DUP 1 ≥ '''REPEAT'''
|-
1 - SWAP "M" + SWAP '''END'''
|
1 3 '''FOR''' j
≪ '''IF''' DUP 5000 < '''THEN'''
10 *
{ "IIIVIIIX" '''IF''' DUP"XXXLXXXC" IP '''THEN'''"CCCDCCCM" }
{ 11 21 31 43 44 54 64 74 87 88 } → rom args
"" LAST GET 10 MOD LAST / IPSWAP
1 3 '''FOR''' { "CCCDCCCM" "XXXLXXXC" "IIIVIIIX" }j
j10 GETMOD ROTLAST ROT/ SUB ROT SWAP + SWAPIP
'''ENDIF''' SWAP '''THEN'''
FP '''NEXT''' args LAST GET 10 MOD LAST / IP
1 - SWAP "M" rom j GET ROT ROT SUB ROT + SWAP '''END'''
END DROP
1 3 '''FORNEXT''' j
≫ '➜ROM' STO
'''WHILE''' DUP '''REPEAT''' 1 - "M" ROT + SWAP '''REPEATEND'''
DROP '''END'''
'➜ROM'''→ROM'''' STO
|
'''→ROM''' ''( n -- "M..CXVI" )''
collapsed Roman digits
10 arguments to extract Roman digits
initialize stack
process units to hundreds
divmod(n,10)
if last digit ≠ 0 then
get extraction arguments
extract Roman digit
add thousands if any
clean stack
10 *
|}
 
=={{header|Ruby}}==
1,150

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.