Data update
This commit is contained in:
parent
0df55f9f24
commit
aec8ed51b6
1045 changed files with 18889 additions and 2777 deletions
54
Task/LZW-compression/Applesoft-BASIC/lzw-compression.basic
Normal file
54
Task/LZW-compression/Applesoft-BASIC/lzw-compression.basic
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue