dmx
01-01-2012 21:05:41
Koduję ciąg FEAEDAEAFE, słownik 4 pozycje, bufor także 4
Trójki zapisuję w formacie (P, C, S)
P - indeks podciągu
C - długość podciągu
S - następny symbol znajdujący się za podciągiem
1. Wpisuję do słownika pierwszy symbol
0 1 2 3 | bufor wejściowy
-----|-----|-----|----|----------------
| F | F | F | F | F | E | A | E
2. Wypisuję pierwszą trójkę (0, 1, E) i przesuwam całe okno o 2 pozycje w lewo.
0 1 2 3 | bufor wejściowy
-----|-----|-----|----|----------------
| F | F | F | E | A | E | D | A
3. Druga trójka (0,0, E) W słowniku nie ma symbolu więc indeks i długość 0, okno o jedną pozycję w lewo. Straciłem symbol A!
0 1 2 3 | bufor wejściowy
-----|-----|-----|----|----------------
| F | F | E | A | E | D | A | E
4. Trójka (2,1,D), dwa miejsca w lewo
0 1 2 3 | bufor wejściowy
-----|-----|-----|----|----------------
| E | A | E | D | A | E | A | F
5. Trójka (1, 2, A), trzy miejsca w lewo
0 1 2 3 | bufor wejściowy
-----|-----|-----|----|----------------
| D | A | E | A | F | E | |
6. Trójka (0,0, E). Spowoduje to że przy odkodowywaniu stracę symbol F.
Po odkodowaniu otrzymuję: FEEEDEEAE - dwa symbole A przeszły w E a symbol F wogóle przepadł. Dlaczego tak się dzieje? Co z tym można zrobić?