Aikaa käytetty 10h.
Tutustuttu Huffman-koodeihin ja Lempel Ziv -algoritmin eri versioihin. Työn aiheeksi valikoitui LZ77 ja Huffman, jotka tullaan lopulta yhdistämään hieman DEFLATE:a muistuttavaksi pakkausalgoritmiksi. Suurin osa ajasta meni aiemmin tuntemattoman Lempel Zivin opiskeluun. Tutustuttu myös Javan mahdollisuuksiin lukea ja kirjoittaa tiedostoja, ja tähän liittyvien rajoituksien johdosta päätetty (mahdollisesti) luopua täysverisen DEFLATEn toteuttamisesta. Tällä hetkellä tarkoitus olisi ajaa ensin LZ77 tiedostolle ja käyttää 24 bittiä yhden blokin koodaamiseen (12b offset, 4b pituus, 8b seuraava merkki). Tämän jälkeen tiedosto pakataan Huffmann-koodeilla.
Projekti luotu. Tutustuttu hieman gradleen.
Opin miten erilaiset LZ-variaatiot toimii ja käytin aika paljon aikaa miettiessäni miten tällaisen toteuttaisi tehokkaasti. Kiinnostus tiedon pakkaamista kohtaan kasvoi huomattavasti.
Mietityttää, että onko tuo idea DEFLATEn yksinkertaistamisesta järkevä. Pelottaa, että ohjelmasta tulee erittäin vaikea toteuttaa jos alan käyttämään noita 9 bitin mittaisia "aakkosia". Toinen mietityttänyt asia on LZ77:n stringin matchaus. Jos ikkunan koko on 4096 tavua ja matchattava stringi 3-16 tavua niin tähän pitäisi keksiä joku tehokas tapa.
Aloitan ohjelmoimalla yksinkertaisen tiedoston luvun byte-taulukkoon ja LZ77 koodauksen naiivilla stringin matchauksella.