#!/usr/bin/perl
@t = ('A'..'Z','a'..'z','0'..'9','+','-');
sub encode {
@c = map{$t[eval"0b$_"]} ($b.'0'x
($W-1)) =~ /(.{$W})/g; $" = '';
"@c"
}
sub decode {
$f = "%0${W}b";
@b = $b =~ /(.{8})/g;
}
use feature 'say';
@data = <STDIN>;
for $w (6,5,3) {
$W = $w;
say "Width: $W";
for (@data) {
say;
$e = encode $_;
say $e;
say decode $e;
}
}
IyEvdXNyL2Jpbi9wZXJsCkB0ID0gKCdBJy4uJ1onLCdhJy4uJ3onLCcwJy4uJzknLCcrJywnLScpOwpzdWIgZW5jb2RlIHsKICAkZiA9ICdCOCcgeCBsZW5ndGggJF9bMF07CiAgJGIgPSBqb2luICcnLCB1bnBhY2sgJGYsICRfWzBdOwogIEBjID0gbWFweyR0W2V2YWwiMGIkXyJdfSAoJGIuJzAneCgkVy0xKSkgPX4gLygueyRXfSkvZzsKICAkIiA9ICcnOwogICJAYyIKfQoKJXQgPSBtYXB7JF8gPT4gJGkrK30gQHQ7CnN1YiBkZWNvZGUgewogICRmID0gIiUwJHtXfWIiOwogICRiID0gam9pbiAnJywgbWFwe3NwcmludGYgJGYsJHR7JF99fSBzcGxpdCAnJywgJF9bMF07CiAgQGIgPSAkYiA9fiAvKC57OH0pL2c7CiAgcGFjayAnQjgnIHggQGIsIEBiOwp9Cgp1c2UgZmVhdHVyZSAnc2F5JzsKQGRhdGEgPSA8U1RESU4+Owpmb3IgJHcgKDYsNSwzKSB7CiAgJFcgPSAkdzsKICBzYXkgIldpZHRoOiAkVyI7CiAgZm9yIChAZGF0YSkgewogICAgY2hvbXA7CiAgICBzYXk7CiAgICAkZSA9IGVuY29kZSAkXzsKICAgIHNheSAkZTsKICAgIHNheSBkZWNvZGUgJGU7CiAgfQp9
Width: 6
ABCDEFG
QUJDREVGRw
ABCDEFG
Hello, World!
SGVsbG8sIFdvcmxkIQ
Hello, World!
0123456789"#$%&'()`=@
MDEyMzQ1Njc4OSIjJCUmJygpYD1A
0123456789"#$%&'()`=@
Width: 5
ABCDEFG
IFBEGRCFIZDQ
ABCDEFG
Hello, World!
JBSWYbDPFQQFObbSNRSCC
Hello, World!
0123456789"#$%&'()`=@
GAYTEMZUGUbDOOBZEIRSIJJGEcUCSYBdIA
0123456789"#$%&'()`=@
Width: 3
ABCDEFG
CACEBBADCBAECFAGCBG
ABCDEFG
Hello, World!
CCAGCFFEDDAGHEFEBAAFDFFHDEEGGBEEBAC
Hello, World!
0123456789"#$%&'()`=@
BEADAEGCBEGDCAGFBFEDDEHABGCCBAEDBBACCEEGBBGCEAFBDAADGFAA
0123456789"#$%&'()`=@