7个版本
0.1.6 | 2020年12月9日 |
---|---|
0.1.5 | 2020年12月2日 |
0.1.3 | 2020年11月27日 |
0.1.2 | 2020年9月29日 |
#362 在 压缩 分类中
每月 26 次下载
18KB
325 行
Huffman码
通过Huffman码进行无损数据压缩
Rust
~300行代码,无依赖,no_std
基准测试
实现将ASCII表示存储在Vec
中,非ASCII码存储在BTreeMap
中。在2.3 GHz 8-Core Intel Core i9
处理器上进行的基准测试
% cargo bench
test medium_decode ... bench: 1,000,752 ns/iter (+/- 82,200)
test medium_encode ... bench: 810,993 ns/iter (+/- 50,708)
test small_decode ... bench: 191,527 ns/iter (+/- 30,319)
test small_encode ... bench: 46,148 ns/iter (+/- 4,768)
前言
所有示例查询均来自swish REPL
(main)⚡ % swipl huffman.pl
Welcome to SWI-Prolog (threaded, 64 bits, version 8.2.1)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?-
示例查询及输出
?- make_code('How are you doing?',C),ncode('How are',C,R),write(R).
[0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,0,0]
C = [[1, ?, [0, 0, 0, 0]], [1, 'H', [0, 0, 0, 1]], [1, a, [0, 0, 1|...]], [1, d, [0, 0|...]], [1, e, [0|...]], [1, g, [...|...]], [1, i|...], [1|...], [...|...]|...],
R = [0, 0, 0, 1, 1, 1, 1, 1, 0|...] .
?- make_code('How are you doing?',C),dcode([0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,0,0],C,R).
C = [[1, ?, [0, 0, 0, 0]], [1, 'H', [0, 0, 0, 1]], [1, a, [0, 0, 1|...]], [1, d, [0, 0|...]], [1, e, [0|...]], [1, g, [...|...]], [1, i|...], [1|...], [...|...]|...],
R = "How are" .
?- test.
Character Frequency Code
! : 1 00010
c : 1 00011
g : 1 00100
l : 1 00101
p : 1 00110
r : 1 00111
u : 1 01000
x : 1 01001
d : 2 11110
f : 2 11111
h : 2 0000
i : 3 0101
m : 3 0110
o : 3 0111
s : 3 1010
a : 4 1011
e : 4 1100
n : 4 1101
t : 4 1110
: 7 100
true .
许可证
版权所有 2020 4meta5
以下是对任何获得本软件及其相关文档副本(“软件”)的人的授权,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向提供软件的人提供本软件副本的人这样做,前提是满足以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他方式引起的,无论这些责任是否与软件或软件的使用或其他方式有关。