$ echo "ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABC
BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBC
ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCC" | perl -le'
use Data::Dumper; $Data::Dumper::Useqq = 1;
my %alphabet = qw/ A 00 B 01 C 11 /; my %rev_alpha = reverse %alphabet;
while ( <> ) {
chomp;
print length(), " ", $_;
# compress
my $data = pack "B*", join "", map $alphabet{ $_ }, split //;
print length $data, " ", Dumper $data;
# decompress
my $uncp = join "", map $rev_alpha{ $_ }, map /../g, unpack "B*", $data;
print length $uncp, " ", $uncp, "\n";
}
'
63 ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABC
16 $VAR1 = "\27p\1w?\0000\1U\0\24\0\1\177<\34";
64 ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABCA
63 BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBC
16 $VAR1 = "\177p\301\\\17\0000\1U\0\24\0\1\177<\\";
64 BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBCA
63 ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCC
16 $VAR1 = "\37T\1G1\377\360\1u\377\0\0\0?<\374";
64 ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCCA
####
01 A
10 B
11 C
####
$ echo "ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABC
BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBC
ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCC" | perl -le'
use Data::Dumper; $Data::Dumper::Useqq = 1;
my %alphabet = qw/ A 01 B 10 C 11 /; my %rev_alpha = reverse %alphabet;
while ( <> ) {
chomp;
print length(), " ", $_;
# compress
my $data = pack "B*", join "", map $alphabet{ $_ }, split //;
print length $data, " ", Dumper $data;
# decompress
my $uncp = join "", map $rev_alpha{ $_ }, map /../g, unpack "B*", $data;
print length $uncp, " ", $uncp, "\n";
}
'
63 ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABC
16 $VAR1 = "k\265V\273\177UuV\252UiUV\277}l";
63 ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABC
63 BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBC
16 $VAR1 = "\277\265\326\255_UuV\252UiUV\277}\254";
63 BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBC
63 ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCC
16 $VAR1 = "o\251V\233v\377\365V\272\377UUU\177}\374";
63 ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCC