From 121eca277adbd7fda202ad3df675f3dab2a0de92 Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Mon, 3 Oct 2022 07:46:28 +0000 Subject: w185 - Task 1 & 2 --- challenge-185/perlboy1967/perl/ch-1.pl | 34 ++++++++++++++++++++++++++++ challenge-185/perlboy1967/perl/ch-2.pl | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100755 challenge-185/perlboy1967/perl/ch-1.pl create mode 100755 challenge-185/perlboy1967/perl/ch-2.pl diff --git a/challenge-185/perlboy1967/perl/ch-1.pl b/challenge-185/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..fc0b032225 --- /dev/null +++ b/challenge-185/perlboy1967/perl/ch-1.pl @@ -0,0 +1,34 @@ +#!/bin/perl + +=pod + +The Weekly Challenge - 185 + - https://theweeklychallenge.org/blog/perl-weekly-challenge-185/#TASK2 + +Author: Niels 'PerlBoy' van Dijke + +Task 2: Mask Code +Submitted by: Mohammad S Anwar + +You are given a list of codes in many random format. + +Write a script to mask first four characters (a-z,0-9) and keep the rest as it is. + +=cut + +use v5.16; +use warnings; + +use Test::More; + + +sub macFormat ($) { + return join(':',$1,$2,$3,$4,$5,$6) + if ($_[0] =~ /(?i)^([0-9a-f]{2})([0-9a-f]{2})\.([0-9a-f]{2})([0-9a-f]{2})\.([0-9a-f]{2})([0-9a-f]{2})$/); +} + + +is(macFormat('1ac2.34f0.b1c2'),'1a:c2:34:f0:b1:c2'); +is(macFormat('ABC1.20F1.345A'),'AB:C1:20:F1:34:5A'); + +done_testing; diff --git a/challenge-185/perlboy1967/perl/ch-2.pl b/challenge-185/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..e972e05120 --- /dev/null +++ b/challenge-185/perlboy1967/perl/ch-2.pl @@ -0,0 +1,41 @@ +#!/bin/perl + +=pod + +The Weekly Challenge - 185 + - https://theweeklychallenge.org/blog/perl-weekly-challenge-185/#TASK2 + +Author: Niels 'PerlBoy' van Dijke + +Task 2: Mask Code +Submitted by: Mohammad S Anwar + +You are given a list of codes in many random format. + +Write a script to mask first four characters (a-z,0-9) and keep the rest as it is. + +=cut + +use v5.16; +use warnings; + +use Test::More; +use Test::Deep qw(cmp_deeply); + + +sub maskcode { + state $re = '([^0-9a-z]*)([0-9a-z])' x 4; + my @r; + for (@_) { + push(@r,s/^$re/$1x$3x$5x$7x/or); + } + @r; +} + + +cmp_deeply([maskcode('ab-cde-123', '123.abc.420', '3abc-0010.xy')], + ['xx-xxe-123', 'xxx.xbc.420', 'xxxx-0010.xy']); +cmp_deeply([maskcode('1234567.a', 'a-1234-bc', 'a.b.c.d.e.f')], + ['xxxx567.a', 'x-xxx4-bc', 'x.x.x.x.e.f']); + +done_testing; -- cgit From ea668ea9c725e7225d86f37c83f9878c2be0ac33 Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Mon, 3 Oct 2022 07:53:07 +0000 Subject: Create similar regexp as in task 2 --- challenge-185/perlboy1967/perl/ch-1.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/challenge-185/perlboy1967/perl/ch-1.pl b/challenge-185/perlboy1967/perl/ch-1.pl index fc0b032225..93cf7b0f37 100755 --- a/challenge-185/perlboy1967/perl/ch-1.pl +++ b/challenge-185/perlboy1967/perl/ch-1.pl @@ -23,8 +23,9 @@ use Test::More; sub macFormat ($) { + state $re = join '\.', map { '([0-9a-f]{2})' x 2 } (1 .. 3); return join(':',$1,$2,$3,$4,$5,$6) - if ($_[0] =~ /(?i)^([0-9a-f]{2})([0-9a-f]{2})\.([0-9a-f]{2})([0-9a-f]{2})\.([0-9a-f]{2})([0-9a-f]{2})$/); + if ($_[0] =~ /(?i)^$re$/o); } -- cgit From 57f2a104a5c3961d3343ed09f28c622690fcc0b6 Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Mon, 3 Oct 2022 08:00:31 +0000 Subject: Remove 'map' to generate the regexp --- challenge-185/perlboy1967/perl/ch-1.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-185/perlboy1967/perl/ch-1.pl b/challenge-185/perlboy1967/perl/ch-1.pl index 93cf7b0f37..145efb72ad 100755 --- a/challenge-185/perlboy1967/perl/ch-1.pl +++ b/challenge-185/perlboy1967/perl/ch-1.pl @@ -23,7 +23,7 @@ use Test::More; sub macFormat ($) { - state $re = join '\.', map { '([0-9a-f]{2})' x 2 } (1 .. 3); + state $re = join '\.', ('([0-9a-f]{2})' x 2) x 3; return join(':',$1,$2,$3,$4,$5,$6) if ($_[0] =~ /(?i)^$re$/o); } -- cgit From 28f612f47a1b95b37cdea25c1a2c081b63696f55 Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Mon, 3 Oct 2022 08:02:40 +0000 Subject: Ignore case in regexp --- challenge-185/perlboy1967/perl/ch-2.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-185/perlboy1967/perl/ch-2.pl b/challenge-185/perlboy1967/perl/ch-2.pl index e972e05120..d5cca9c7ff 100755 --- a/challenge-185/perlboy1967/perl/ch-2.pl +++ b/challenge-185/perlboy1967/perl/ch-2.pl @@ -27,7 +27,7 @@ sub maskcode { state $re = '([^0-9a-z]*)([0-9a-z])' x 4; my @r; for (@_) { - push(@r,s/^$re/$1x$3x$5x$7x/or); + push(@r,s/(?i)^$re/$1x$3x$5x$7x/or); } @r; } -- cgit