-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Vertaisarvionti
Varmaan johtuu omasta puutteellisesta osaamisesta, mutta en saanut ajettua koodia.
Jotain yleishuomiota kuitenkin. Koodia on huffmanin osalta kommentoitu mukavasti ja siitä saa selvää. Tiedostoon kirjoittaminen bitti bitiltä oli ainakin minulle aika haastavaa ja painin itse sen kanssa viikko tolkulla. Huomaan että sinullakin tuo on varmasti vaikein osuus. Huffmanin voisi kirjoitta jonkin verran selkeämmin, kunhan tiedostoon kirjoittamiset on kunnossa.
LZW vaikuttaa siltä, että se kärsii myös tiedostoon kirjoitusongelmista. Varmaan hyvä huomata, että lzw:n teho perustuu osittain siihen, että enkoodausta ei tarvitse tehdä 4 byten int kokoisena vaan esim wikipedia sivulla olevalla 12 bitin kiinteällä koolla tms.
Olet käyttänyt LZWssä myös HashMap rakennetta dictionaryn. Se on tilavaatimuksiltaan tässä aika heikko ratkaisu, koska jokainen substring pitää tallettaa erikseen. Itse käytin Ternary Search Treetä. Kannattaa vilkaista, on lopulta aika helppo implementoida ja siihen saa metodit: pisin prefix ja hae avain aika helposti tehtyä.
vastaavasti sitten purkaessa voi käyttää ihan suoraan string arrayta.
Veikkaan, että tuo kirjoituskoko vaikuttaa saamiisi tuloksiin. Minulla nimittäin LZW pakkasi tuon saman tiedoston noin kolmasosaan alkuperäisestä kun huffman taas noin puoleen. käytin siis tiedostoasi 100_KB_lorem.txt.
Tsemmpiä!
kloonasin repon 11.12 kello 23:20