RosettaCodeData/Task/Move-to-front-algorithm/BASIC/move-to-front-algorithm.basic
2026-04-30 12:34:36 -04:00

31 lines
696 B
Text

10 DEFINT C,L: DIM C(128)
20 AL$="abcdefghijklmnopqrstuvwxyz"
30 READ W$: IF W$="" THEN END
40 PRINT W$;" -> ";
50 S$=W$: GOSUB 1000
60 FOR I=1 TO L: PRINT C(I);: NEXT I
70 GOSUB 1100
80 PRINT " -> ";S$
90 IF S$<>W$ THEN PRINT "Not equal"
100 GOTO 30
110 END
120 DATA broood,bananaaa,hiphophiphop,""
1000 REM ENCODE
1010 Z$=AL$
1020 FOR I=1 TO LEN(S$)
1030 J=INSTR(Z$,MID$(S$,I,1))
1040 C(I)=J-1
1050 Z$=MID$(Z$,J,1) + LEFT$(Z$,J-1) + RIGHT$(Z$,LEN(Z$)-J)
1060 NEXT I
1070 L=LEN(S$)
1080 RETURN
1100 REM DECODE
1110 Z$=AL$
1120 S$=""
1130 FOR I=1 TO L
1140 C$=MID$(Z$,C(I)+1,1)
1150 S$=S$+C$
1160 J=INSTR(Z$,C$)
1170 Z$=MID$(Z$,J,1) + LEFT$(Z$,J-1) + RIGHT$(Z$,LEN(Z$)-J)
1180 NEXT I
1190 RETURN