gzip-huffman-tree icon indicating copy to clipboard operation
gzip-huffman-tree copied to clipboard

The script sometimes has wrong output

Open theMarina opened this issue 4 years ago • 2 comments

Here is a buggy input:

litlen 9 10
litlen 10 10
litlen 32 6
litlen 33 11
litlen 34 8
litlen 35 10
litlen 36 11
litlen 37 11
litlen 38 9
litlen 39 9
litlen 40 10
litlen 41 10
litlen 42 12
litlen 43 13
litlen 44 8
litlen 45 7
litlen 46 8
litlen 47 8
litlen 48 6
litlen 49 6
litlen 50 6
litlen 51 6
litlen 52 6
litlen 53 6
litlen 54 6
litlen 55 6
litlen 56 6
litlen 57 6
litlen 58 9
litlen 59 10
litlen 60 9
litlen 61 8
litlen 62 8
litlen 63 12
litlen 65 7
litlen 66 8
litlen 67 8
litlen 68 8
litlen 69 8
litlen 70 8
litlen 71 10
litlen 72 9
litlen 73 8
litlen 74 10
litlen 75 10
litlen 76 9
litlen 77 9
litlen 78 8
litlen 79 8
litlen 80 8
litlen 81 10
litlen 82 9
litlen 83 8
litlen 84 8
litlen 85 10
litlen 86 10
litlen 87 10
litlen 88 11
litlen 89 10
litlen 90 11
litlen 91 12
litlen 93 12
litlen 95 7
litlen 97 6
litlen 98 6
litlen 99 6
litlen 100 6
litlen 101 6
litlen 102 6
litlen 103 8
litlen 104 8
litlen 105 7
litlen 106 11
litlen 107 9
litlen 108 7
litlen 109 7
litlen 110 7
litlen 111 7
litlen 112 8
litlen 113 10
litlen 114 7
litlen 115 7
litlen 116 7
litlen 117 8
litlen 118 9
litlen 119 8
litlen 120 9
litlen 121 8
litlen 122 10
litlen 123 12
litlen 124 11
litlen 125 11
litlen 256 13
litlen 257 3
litlen 258 4
litlen 259 5
litlen 260 5
litlen 261 5
litlen 262 5
litlen 263 6
litlen 264 6
litlen 265 5
litlen 266 6
litlen 267 7
litlen 268 7
litlen 269 7
litlen 270 7
litlen 271 8
litlen 272 7
litlen 273 6
litlen 274 7
litlen 275 7
litlen 276 7
litlen 277 7
litlen 278 8
litlen 279 8
litlen 280 8
litlen 281 6
litlen 282 9
litlen 283 9
litlen 284 11
litlen 285 8

The script outputs: '3' 11010

Where '3' = 51 and the length of '3' should be 6 and not 5

theMarina avatar Dec 25 '20 15:12 theMarina

I think that the problem is that line 21 code = ( code + bl_count[ bits - 1 ] ) << 1 happens even if bl_count[ bits ] == 0

theMarina avatar Dec 25 '20 18:12 theMarina

I think that replacing in line 28

print bits,bin(next_code[bits-1])[2:].zfill(min_length)

with

print bits,bin(next_code[bits-1])[2:].zfill(bits)

should solve the issue

theMarina avatar Dec 28 '20 19:12 theMarina