aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-016/ruben-westerberg/perl5/ch-2.pl8
-rwxr-xr-xchallenge-016/ruben-westerberg/perl6/ch-2.p610
2 files changed, 10 insertions, 8 deletions
diff --git a/challenge-016/ruben-westerberg/perl5/ch-2.pl b/challenge-016/ruben-westerberg/perl5/ch-2.pl
index 8ea3fb954f..597b705f68 100755
--- a/challenge-016/ruben-westerberg/perl5/ch-2.pl
+++ b/challenge-016/ruben-westerberg/perl5/ch-2.pl
@@ -3,6 +3,7 @@ use strict;
use warnings;
use bigint;
use Digest::SHA qw(sha256);
+use List::Util qw(all any first);
use v5.26;
my @addresses=@ARGV;
@@ -10,17 +11,18 @@ my @addresses=@ARGV;
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy> unless @addresses;
my %b;
-for ("1".."9","A".."H","J".."N","P".."Z","a".."k","m".."z") {
+my @valid=("1".."9","A".."H","J".."N","P".."Z","a".."k","m".."z");
+for (@valid) {
state $i=0;
$b{$_}=$i++;
}
for (@addresses) {
print "Testing Address: $_\n";
- if (/[IlO]/) { print "Invalid characters found: $_\n"; next};
-
my $sum=0;
my @a=reverse (split ("", $_));
+ unless (all {my $t=$_; first {$t eq $_} @valid} @a) { print "Invalid characters found: $_\n"; next};
+
while (my ($k,$v)=each @a) {
$sum+=$b{$v} *(58**$k);;
}
diff --git a/challenge-016/ruben-westerberg/perl6/ch-2.p6 b/challenge-016/ruben-westerberg/perl6/ch-2.p6
index ba859c705d..0a3a64c82a 100755
--- a/challenge-016/ruben-westerberg/perl6/ch-2.p6
+++ b/challenge-016/ruben-westerberg/perl6/ch-2.p6
@@ -6,24 +6,24 @@ my @addresses=@*ARGS;
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy> unless @addresses;
my %b;
-%b{$_}=$++ for ("1".."9","A".."H","J".."N","P".."Z","a".."k","m".."z").flat;
+my @valid=("1".."9","A".."H","J".."N","P".."Z","a".."k","m".."z").flat;
+%b{$_}=$++ for @valid;
for (@addresses) {
print "Testing Address: $_\n";
- if (/<[IlO]>/) { print "Invalid characters found: $_\n"; next};
-
+ unless so all(comb("",$_)) eq any(@valid) { print "Invalid characters found: $_\n"; next}
my Int $sum=0; #Int type grows as needed
my @a=reverse (comb("", $_));
for @a.kv {
$sum+=%b{$^v} *(58**$^k);
}
my $buff=Buf.new($sum.base(16).fmt("%050s").comb(2)>>.fmt("%02s")>>.parse-base(16));
- unless ($buff.elems <= 25) { print "Invalid length: $_\n";next }
+ unless ($buff.elems <= 25) { print "Invalid length: $_\n"; next }
$buff.unshift(0) while ($buff.elems < 25);
my $check= sha256(sha256($buff.subbuf(0,21))).subbuf(0,4);
my $inCheck=$buff.subbuf(21,4);
- unless ($check eq $inCheck) { print "Check sum mismatch: $_\n";next};
+ unless ($check eq $inCheck) { print "Check sum mismatch: $_\n"; next};
print "Address OK: $_\n\n";
}