29 lines
701 B
Plaintext
29 lines
701 B
Plaintext
10 REM Roman numerals/Encode
|
|
20 DIM WEIGHTS(12),SYMBOLS$(12)
|
|
30 FOR I=0 TO 12
|
|
40 READ WEIGHTS(I),SYMBOLS$(I)
|
|
50 NEXT I
|
|
60 DATA 1000,M,900,CM,500,D,400,CD,100,C,90,XC
|
|
70 DATA 50,L,40,XL,10,X,9,IX,5,V,4,IV,1,I
|
|
80 REM ** 3888 or MMMDCCCLXXXVIII (15 chars) is
|
|
90 REM the longest string properly encoded
|
|
100 REM with these symbols.
|
|
110 V=1990:GOSUB 500
|
|
120 PRINT ROMAN$:REM MCMXC
|
|
130 V=2022:GOSUB 500
|
|
140 PRINT ROMAN$:REM MMXXII
|
|
150 V=3888:GOSUB 500
|
|
160 PRINT ROMAN$:REM MMMDCCCLXXXVIII
|
|
170 END
|
|
490 REM ** Encode to roman
|
|
500 ROMAN$=""
|
|
510 I=0
|
|
520 IF I>12 OR V<=0 THEN RETURN
|
|
530 IF V<WEIGHTS(I) THEN 570
|
|
540 ROMAN$=ROMAN$+SYMBOLS$(I)
|
|
550 V=V-WEIGHTS(I)
|
|
560 GOTO 530
|
|
570 I=I+1
|
|
580 GOTO 520
|
|
590 RETURN
|