55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
0 PLAIN$ = "TOBEORNOTTOBEORTOBEORNOT"
|
|
10 GOSUB 200"ENCODE PLAIN$
|
|
20 FOR I = 1 TO LEN (ENCODE$) STEP 2
|
|
30 PRINT S$ ASC ( MID$ (ENCODE$,I)) + 256 * ASC ( MID$ (ENCODE$,I + 1));
|
|
40 LET S$ = " "
|
|
50 NEXT
|
|
60 PRINT
|
|
70 GOSUB 300"DECODE ENCODE$
|
|
80 PRINT PLAIN$;
|
|
90 END
|
|
|
|
100 FOR C = 0 TO 1E9 STEP 0
|
|
110 IF I > S THEN RETURN
|
|
120 FOR D = 1 TO L - 1
|
|
130 IF W$ < > DICT$(D) THEN NEXT D
|
|
140 IF D > = L THEN RETURN
|
|
150 LET I = I + 1
|
|
160 LET W$ = W$ + MID$ (PLAIN$,I,1)
|
|
170 LET C = D
|
|
180 NEXT C
|
|
190 RETURN
|
|
|
|
REM ENCODE PLAIN$ RETURN ENCODE$
|
|
200 IF NOT DI THEN DIM DICT$(4095)
|
|
210 FOR I = 0 TO 255:DICT$(I) = CHR$ (I): NEXT
|
|
220 LET DI = 1 : L = I : S = LEN (PLAIN$):ENCODE$ = ""
|
|
230 LET W$ = LEFT$ (PLAIN$,1)
|
|
240 FOR I = 1 TO 1E9 STEP 0
|
|
250 GOSUB 100
|
|
260 LET DICT$(L) = W$:L = L + 1:W$ = RIGHT$ (W$,1)
|
|
270 LET C% = C / 256:ENCODE$ = ENCODE$ + CHR$ (C - C% * 256) + CHR$ (C%)
|
|
280 IF I < = S THEN NEXT I
|
|
290 RETURN
|
|
|
|
REM DECODE ENCODE$ RETURN PLAIN$
|
|
300 IF NOT DI THEN DIM DICT$(4095)
|
|
310 FOR I = 0 TO 255:DICT$(I) = CHR$ (I): NEXT
|
|
320 LET DI = 1 : L = I
|
|
330 FOR I = L TO 4095:DICT$(I) = "": NEXT
|
|
340 LET C = ASC (ENCODE$) + 256 * ASC ( MID$ (ENCODE$,2))
|
|
350 LET W$ = DICT$(C)
|
|
360 LET PLAIN$ = W$
|
|
370 LET S = LEN (ENCODE$)
|
|
380 IF S < 4 THEN RETURN
|
|
400 FOR I = 3 TO S STEP 2
|
|
410 LET C = ASC ( MID$ (ENCODE$,I)) + 256 * ASC ( MID$ (ENCODE$,I + 1))
|
|
420 IF C < L THEN T$ = DICT$(C)
|
|
430 IF C > = L THEN T$ = W$ + LEFT$ (W$,1)
|
|
440 LET PLAIN$ = PLAIN$ + T$
|
|
450 LET DICT$(L) = W$ + LEFT$ (T$,1)
|
|
460 LET L = L + 1
|
|
470 LET W$ = T$
|
|
480 NEXT
|
|
490 RETURN
|