Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Base64-decode-data/Raku/base64-decode-data.raku
Normal file
26
Task/Base64-decode-data/Raku/base64-decode-data.raku
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
my $e64 = '
|
||||
VG8gZXJyIGlzIGh1bWFuLCBidXQgdG8gcmVhbGx5IGZvdWwgdGhpbmdzIHVwIHlvdSBuZWVkIGEgY2
|
||||
9tcHV0ZXIuCiAgICAtLSBQYXVsIFIuIEVocmxpY2g=
|
||||
';
|
||||
|
||||
my @base64map = flat 'A' .. 'Z', 'a' .. 'z', ^10, '+', '/';
|
||||
my %base64 is default(0) = @base64map.pairs.invert;
|
||||
|
||||
sub base64-decode-slow ($enc) {
|
||||
my $buf = Buf.new;
|
||||
for $enc.subst(/\s/, '', :g).comb(4) -> $chunck {
|
||||
$buf.append: |(sprintf "%06d%06d%06d%06d", |$chunck.comb.map:
|
||||
{%base64{$_}.base(2)}).comb(8).map: {:2($_)};
|
||||
}
|
||||
$buf
|
||||
}
|
||||
|
||||
say 'Slow:';
|
||||
say base64-decode-slow($e64).decode('utf8');
|
||||
|
||||
|
||||
# Of course, the above routine is slow and is only for demonstration purposes.
|
||||
# For real code you should use a module, which is MUCH faster and heavily tested.
|
||||
say "\nFast:";
|
||||
use Base64::Native;
|
||||
say base64-decode($e64).decode('utf8');
|
||||
Loading…
Add table
Add a link
Reference in a new issue