问题描述
我使用 this JS-library 进行霍夫曼编码。它在某些字符串上失败,如以下示例 (RunKit) 所示:
train = "[1300 [[57 4.56 0.12 11 10260 240] [8.600000000000001 5.2 0.44 44 16447 142] [8.600000000000001 240.8 0.08 12 930] [8.600000000000001 0.16 4.63 230 1080] [8.600000000000001 482.1 2.82 490 572] [8.600000000000001 135.1 28.67 820 1185]]]"
troublesomeInput = "[1300 [[56 4.56 0.12 11 10260 240] [44 5.2 0.44 44 16447 142] [0 240.8 0.08 12 930] [0 0.16 4.63 230 1080] [0 482.1 2.82 490 572] [0 135.1 28.67 820 1185]]]"
let Encoder = huffmanUrlCompressor.createEncoder(train);
let encodedParam = huffmanUrlCompressor.encodeConfig(troublesomeInput,Encoder)
let decodParam= huffmanUrlCompressor.decodeConfig(encodedParam,Encoder)
decodParam
结果为:
[1300 [[56 4.56 0.12 11 10260 240] [44 5.2 0.44 44 16447 142] [0 240.8 0.08 12 930] [0 0.16 4.63 230 1080] [0 482.1 2.82 490 572] [0 135.1 28.67 820 1185]]
如您所见,尾括号在此过程中丢失了。我在这里做错了什么还是错过了霍夫曼算法应该做的事情?或者我应该将此报告为图书馆的问题?
解决方法
就目前而言,这很可能表明我正在使用的库存在错误。我现在打开了一个 issue on the library's GitHub page。我会在获得更多信息后更新此答案,但暂时将其关闭。