This is a sample of the ALWC (Autumn Leaves Winter Cut-back) algorithm I came up last night, it's a kind of false dynamic Huffman, not sure its really helpful since both the encoder and the decoder need the real number of occurrences of each letter beforehand which leads to larger headers for limited gains.
Basically it starts by building a standard Huffman prefix-free code, after each symbol encoding/decoding it updates its occurrence count and keeps the symbol list sorted until the symbol count reaches zero — the Autumn Leave — resulting in a small prefix-free code change (two of the longest codes are fused together to form a one bit shorter code) — the Winter Cut-back —.
Sample used "Les beaux kiwis que voici !"
Symbol count between square brackets.
Code:[5] _ 00 [4] i 010 [3] e 011 [2] s 1000 [2] u 1001 [1] x 1010 [1] ! 10110 [1] L 10111 [1] a 11000 [1] b 11001 [1] c 11010 [1] k 11011 [1] o 11100 [1] q 11101 [1] v 11110 [1] w 11111 L (10111) [5] _ 00 [5] _ 00 [4] i 010 [4] i 010 [3] e 011 [3] e 011 [2] s 1000 [2] s 1000 [2] u 1001 [2] u 1001 [1] x 1010 [1] x 1010 [1] ! 10110 [1] ! 1011 [1] a 10111 [1] a 11000 [1] b 11000 [1] b 11001 [1] c 11001 [1] c 11010 [1] k 11010 [1] k 11011 [1] o 11011 [1] o 11100 [1] q 11100 [1] q 11101 [1] v 11101 [1] v 11110 [1] w 11110 [1] w 11111 11111 e (011) [5] _ 00 [4] i 010 [2] e 011 [2] s 1000 [2] u 1001 [1] x 1010 [1] ! 1011 [1] a 11000 [1] b 11001 [1] c 11010 [1] k 11011 [1] o 11100 [1] q 11101 [1] v 11110 [1] w 11111 s (1000) [5] _ 00 [4] i 010 [2] e 011 [2] u 1000 [1] s 1001 [1] x 1010 [1] ! 1011 [1] a 11000 [1] b 11001 [1] c 11010 [1] k 11011 [1] o 11100 [1] q 11101 [1] v 11110 [1] w 11111 _ (00) [4] _ 00 [4] i 010 [2] e 011 [2] u 1000 [1] s 1001 [1] x 1010 [1] ! 1011 [1] a 11000 [1] b 11001 [1] c 11010 [1] k 11011 [1] o 11100 [1] q 11101 [1] v 11110 [1] w 11111 b (11001) [4] _ 00 [4] _ 00 [4] i 010 [4] i 010 [2] e 011 [2] e 011 [2] u 1000 [2] u 1000 [1] s 1001 [1] s 1001 [1] x 1010 [1] x 1010 [1] ! 1011 [1] ! 1011 [1] a 11000 [1] a 1100 [1] c 11001 [1] c 11010 [1] k 11010 [1] k 11011 [1] o 11011 [1] o 11100 [1] q 11100 [1] q 11101 [1] v 11101 [1] v 11110 [1] w 11110 [1] w 11111 11111 e (011) [4] _ 00 [4] i 010 [2] u 011 [1] e 1000 [1] s 1001 [1] x 1010 [1] ! 1011 [1] a 1100 [1] c 11010 [1] k 11011 [1] o 11100 [1] q 11101 [1] v 11110 [1] w 11111 a (1100) [4] _ 00 [4] _ 00 [4] i 010 [4] i 010 [2] u 011 [2] u 011 [1] e 1000 [1] e 1000 [1] s 1001 [1] s 1001 [1] x 1010 [1] x 1010 [1] ! 1011 [1] ! 1011 [1] c 1100 [1] c 1100 [1] k 11010 [1] k 1101 [1] o 11011 [1] o 11100 [1] q 11100 [1] q 11101 [1] v 11101 [1] v 11110 [1] w 11110 [1] w 11111 11111 u (011) [4] _ 00 [4] i 010 [1] u 011 [1] e 1000 [1] s 1001 [1] x 1010 [1] ! 1011 [1] c 1100 [1] k 1101 [1] o 11100 [1] q 11101 [1] v 11110 [1] w 11111 x (1010) [4] _ 00 [4] _ 00 [4] i 010 [4] i 010 [1] u 011 [1] u 011 [1] e 1000 [1] e 1000 [1] s 1001 [1] s 1001 [1] ! 1010 [1] ! 1010 [1] c 1011 [1] c 1011 [1] k 1100 [1] k 1100 [1] o 1101 [1] o 1101 [1] q 11100 [1] q 1110 [1] v 11101 [1] v 11110 [1] w 11110 [1] w 11111 11111 _ (00) [4] i 00 [3] _ 010 [1] u 011 [1] e 1000 [1] s 1001 [1] ! 1010 [1] c 1011 [1] k 1100 [1] o 1101 [1] q 1110 [1] v 11110 [1] w 11111 k (1100) [4] i 00 [4] i 00 [3] _ 010 [3] _ 010 [1] u 011 [1] u 011 [1] e 1000 [1] e 1000 [1] s 1001 [1] s 1001 [1] ! 1010 [1] ! 1010 [1] c 1011 [1] c 1011 [1] o 1100 [1] o 1100 [1] q 1101 [1] q 1101 [1] v 1110 [1] v 1110 [1] w 11110 [1] w 1111 11111 i (00) [3] i 00 [3] _ 010 [1] u 011 [1] e 1000 [1] s 1001 [1] ! 1010 [1] c 1011 [1] o 1100 [1] q 1101 [1] v 1110 [1] w 1111 w (1111) [3] i 00 [3] i 00 [3] _ 010 [3] _ 010 [1] u 011 [1] u 011 [1] e 1000 [1] e 100 [1] s 1001 [1] s 1010 [1] ! 1010 [1] ! 1011 [1] c 1011 [1] c 1100 [1] o 1100 [1] o 1101 [1] q 1101 [1] q 1110 [1] v 1110 [1] v 1111 1111 i (00) [3] _ 00 [2] i 010 [1] u 011 [1] e 100 [1] s 1010 [1] ! 1011 [1] c 1100 [1] o 1101 [1] q 1110 [1] v 1111 s (1010) [3] _ 00 [3] _ 00 [2] i 010 [2] i 010 [1] u 011 [1] u 011 [1] e 100 [1] e 100 [1] ! 1010 [1] ! 101 [1] c 1011 [1] c 1100 [1] o 1100 [1] o 1101 [1] q 1101 [1] q 1110 [1] v 1110 [1] v 1111 1111 _ (00) [2] _ 00 [2] i 010 [1] u 011 [1] e 100 [1] ! 101 [1] c 1100 [1] o 1101 [1] q 1110 [1] v 1111 q (1110) [2] _ 00 [2] _ 00 [2] i 010 [2] i 010 [1] u 011 [1] u 011 [1] e 100 [1] e 100 [1] ! 101 [1] ! 101 [1] c 1100 [1] c 110 [1] o 1101 [1] o 1110 [1] v 1110 [1] v 1111 1111 u (011) [2] _ 00 [2] _ 00 [2] i 010 [2] i 010 [1] e 011 [1] e 011 [1] ! 100 [1] ! 100 [1] c 101 [1] c 101 [1] o 110 [1] o 110 [1] v 1110 [1] v 111 1111 e (011) [2] _ 00 [2] _ 00 [2] i 010 [2] i 01 [1] ! 011 [1] ! 100 [1] c 100 [1] c 101 [1] o 101 [1] o 110 [1] v 110 [1] v 111 111 _ (00) [2] i 00 [1] _ 01 [1] ! 100 [1] c 101 [1] o 110 [1] v 111 v (111) [2] i 00 [2] i 00 [1] _ 01 [1] _ 01 [1] ! 100 [1] ! 10 [1] c 101 [1] c 110 [1] o 110 [1] o 111 111 o (111) [2] i 00 [2] i 00 [1] _ 01 [1] _ 01 [1] ! 10 [1] ! 10 [1] c 110 [1] c 11 111 i (00) [1] i 00 [1] _ 01 [1] ! 10 [1] c 11 c (11) [1] i 00 [1] i 0 [1] _ 01 [1] _ 10 [1] ! 10 [1] ! 11 11 i (0) [1] _ 0 [1] _ 0 [1] ! 10 [1] ! 1 11 _ (0) [1] ! 1 0 ! ()