diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2022-10-08 19:06:15 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2022-10-08 19:06:15 +0800 |
| commit | 30b5a6f49947856f98c056b00b2fe69404761593 (patch) | |
| tree | b043e8f9c52154e26f32ef212a5869fd61f03ef0 | |
| parent | 9bb31b78379686bc86174262173e495fd09d0e38 (diff) | |
| download | perlweeklychallenge-club-30b5a6f49947856f98c056b00b2fe69404761593.tar.gz perlweeklychallenge-club-30b5a6f49947856f98c056b00b2fe69404761593.tar.bz2 perlweeklychallenge-club-30b5a6f49947856f98c056b00b2fe69404761593.zip | |
Week 185 Perl Solutions
| -rw-r--r-- | challenge-185/cheok-yin-fung/perl/ch-1.pl | 17 | ||||
| -rw-r--r-- | challenge-185/cheok-yin-fung/perl/ch-2.pl | 35 |
2 files changed, 52 insertions, 0 deletions
diff --git a/challenge-185/cheok-yin-fung/perl/ch-1.pl b/challenge-185/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..a27dc2328a --- /dev/null +++ b/challenge-185/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,17 @@ +# The Weekly Challenge 185 +# Task 1 MAC Address +use v5.30.0; +use warnings; + +sub mac_add { + if ($_[0] =~ /(\w\w)(\w\w)\.(\w\w)(\w\w)\.(\w\w)(\w\w)/) { + return "$1:$2:$3:$4:$5:$6"; + } + else { + die "Not a MAC address in the designated form." + } +} + +use Test::More tests=>2; +ok mac_add("1ac2.34f0.b1c2") eq "1a:c2:34:f0:b1:c2"; +ok mac_add("abc1.20f1.345a") eq "ab:c1:20:f1:34:5a"; diff --git a/challenge-185/cheok-yin-fung/perl/ch-2.pl b/challenge-185/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..b723ad236c --- /dev/null +++ b/challenge-185/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,35 @@ +# The Weekly Challenge 185 +# Task 2 Mask Code +use v5.30.0; +use warnings; + +sub mask_code_str { + my @arr = split "", $_[0]; + my $i = 3; + my $j = 0; + my $ans = ""; + while ($i >= 0 && $j <= $#arr) { + if ($arr[$j] =~ /[a-z0-9]/) { + $i--; + $ans .= "x"; + } + else { + $ans .= $arr[$j]; + } + $j++; + } + if ($j <= $#arr) { + $ans .= $arr[$_] for $j..$#arr; + } + return $ans; +} + +use Test::More tests=>2; +use Test::Deep; +my @list1 = ('ab-cde-123', '123.abc.420', '3abc-0010.xy'); +cmp_deeply( [map {mask_code_str $_} @list1], + ['xx-xxe-123', 'xxx.xbc.420', 'xxxx-0010.xy']); +my @list2 = ('1234567.a', 'a-1234-bc', 'a.b.c.d.e.f'); +cmp_deeply( [map {mask_code_str $_} @list2], + ['xxxx567.a', 'x-xxx4-bc', 'x.x.x.x.e.f']); +done_testing; |
