42 lines
793 B
Plaintext
42 lines
793 B
Plaintext
REM Roman numerals/Encode
|
|
DIM Weights(12)
|
|
DIM Symbols$(12)
|
|
DATA 1000, "M", 900, "CM", 500, "D", 400, "CD", 100, "C", 90, "XC", 50, "L"
|
|
DATA 40, "XL", 10, "X", 9, "IX", 5, "V", 4, "IV", 1, "I"
|
|
REM 3888 or MMMDCCCLXXXVIII (15 chars) is the longest string properly encoded
|
|
REM with these symbols.
|
|
FOR J = 0 TO 12
|
|
READ Weights(J)
|
|
READ Symbols$(J)
|
|
NEXT J
|
|
|
|
AValue = 1990
|
|
GOSUB ToRoman:
|
|
PRINT Roman$
|
|
REM MCMXC
|
|
AValue = 2022
|
|
GOSUB ToRoman:
|
|
PRINT Roman$
|
|
REM MMXXII
|
|
AValue = 3888
|
|
GOSUB ToRoman:
|
|
PRINT Roman$
|
|
REM MMMDCCCLXXXVIII
|
|
END
|
|
|
|
ToRoman:
|
|
REM Result: Roman$
|
|
Roman$ = ""
|
|
I = 0
|
|
Loop:
|
|
IF (I > 12 THEN ExitToRoman:
|
|
IF AValue <= 0 THEN ExitToRoman:
|
|
WHILE AValue >= Weights(I)
|
|
Roman$ = Roman$ + Symbols$(I)
|
|
AValue = AValue - Weights(I)
|
|
WEND
|
|
I = I + 1
|
|
GOTO Loop:
|
|
ExitToRoman:
|
|
RETURN
|