aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2022-09-26 10:09:16 +0800
committerCY Fung <fungcheokyin@gmail.com>2022-09-26 10:09:16 +0800
commit9bb31b78379686bc86174262173e495fd09d0e38 (patch)
tree9ec6d5b448fa415b62ce819b6e01b273c7dd55c7
parent75ce49b9bb4867c6f439d78e3ff020afab5460ee (diff)
downloadperlweeklychallenge-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.pl35
-rw-r--r--challenge-184/cheok-yin-fung/perl/ch-2.pl34
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();
+