diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2022-09-26 10:09:16 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2022-09-26 10:09:16 +0800 |
| commit | 9bb31b78379686bc86174262173e495fd09d0e38 (patch) | |
| tree | 9ec6d5b448fa415b62ce819b6e01b273c7dd55c7 | |
| parent | 75ce49b9bb4867c6f439d78e3ff020afab5460ee (diff) | |
| download | perlweeklychallenge-club-9bb31b78379686bc86174262173e495fd09d0e38.tar.gz perlweeklychallenge-club-9bb31b78379686bc86174262173e495fd09d0e38.tar.bz2 perlweeklychallenge-club-9bb31b78379686bc86174262173e495fd09d0e38.zip | |
Week 184 Perl solutions
| -rw-r--r-- | challenge-184/cheok-yin-fung/perl/ch-1.pl | 35 | ||||
| -rw-r--r-- | challenge-184/cheok-yin-fung/perl/ch-2.pl | 34 |
2 files changed, 69 insertions, 0 deletions
diff --git a/challenge-184/cheok-yin-fung/perl/ch-1.pl b/challenge-184/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..993aa1dadf --- /dev/null +++ b/challenge-184/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,35 @@ +# The Weekly Challenge 184 +# Task 1 Sequence Number +use v5.30.0; +use warnings; + + +sub two_digits { + return $_[0] if length $_[0] == 2; + return "0".$_[0] if length $_[0] == 1; +} + +sub seq_num { + my @list = $_[0]->@*; + my @new_list; + my $k = 0; + for (@list) { + my $dd = two_digits($k); + $_ =~ s/[a-z]{2}/$dd/; + push @new_list, $_; + $k++; + } + + return [@new_list]; +} + + + +use Test::More; +use Test::Deep; + +cmp_deeply(seq_num(['ab1234', 'cd5678', 'ef1342']), + ['001234', '015678', '021342']); +cmp_deeply(seq_num(['pq1122', 'rs3334']), + ['001122', '013334']); +done_testing(); diff --git a/challenge-184/cheok-yin-fung/perl/ch-2.pl b/challenge-184/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..6f3ba568d8 --- /dev/null +++ b/challenge-184/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,34 @@ +# The Weekly Challenge 184 +# Task 2 Split Array +use v5.30.0; +use warnings; + +sub split_arr { + my @arr = $_[0]->@*; + my @numeric; + my @alphabets; + for (@arr) { + my @_numeric; + my @_alphabets; + my @chars = split " ", $_; + for (@chars) { + push @_numeric, $_ if $_ =~ /\d/; + push @_alphabets, $_ if $_ =~ /[a-z]/; + } + push @numeric, [@_numeric] if scalar @_numeric != 0; + push @alphabets, [@_alphabets] if scalar @_alphabets != 0; + } + return [ [@numeric], [@alphabets] ]; +} + + + +use Test::More; +use Test::Deep; + +cmp_deeply(split_arr(['a 1 2 b 0', '3 c 4 d']), + [ [[1,2,0], [3,4]] , [['a','b'], ['c','d']] ]); +cmp_deeply(split_arr(['1 2', 'p q r', 's 3', '4 5 t']), + [ [[1,2], [3], [4,5]] , [['p','q','r'], ['s'], ['t']] ]); +done_testing(); + |
