23 lines
810 B
Plaintext
23 lines
810 B
Plaintext
10 REM Roman numerals/Encode
|
|
20 DIM WEIGHTS%(12), SYMBOLS$(12)
|
|
30 FOR J% = 0 TO 12: READ WEIGHTS%(J%), SYMBOLS$(J%): NEXT J%
|
|
40 DATA 1000, "M", 900, "CM", 500, "D", 400, "CD", 100, "C", 90, "XC"
|
|
50 DATA 50, "L", 40, "XL", 10, "X", 9, "IX", 5, "V", 4, "IV", 1, "I"
|
|
60 REM 3888 or MMMDCCCLXXXVIII (15 chars) is
|
|
70 REM the longest string properly encoded
|
|
80 REM with these symbols.
|
|
90 AVALUE% = 1990: GOSUB 1000: PRINT ROMAN$ ' MCMXC
|
|
100 AVALUE% = 2022: GOSUB 1000: PRINT ROMAN$ ' MMXXII
|
|
110 AVALUE% = 3888: GOSUB 1000: PRINT ROMAN$ ' MMMDCCCLXXXVIII
|
|
120 END
|
|
990 REM Encode to roman
|
|
1000 ROMAN$ = "": I% = 0
|
|
1010 WHILE (I% <= 12) AND (AVALUE% > 0)
|
|
1020 WHILE AVALUE% >= WEIGHTS%(I%)
|
|
1030 ROMAN$ = ROMAN$ + SYMBOLS$(I%)
|
|
1040 AVALUE% = AVALUE% - WEIGHTS%(I%)
|
|
1050 WEND
|
|
1060 I% = I% + 1
|
|
1070 WEND
|
|
1080 RETURN
|