aboutsummaryrefslogtreecommitdiff
path: root/challenge-057/mohammad-anwar/perl
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-04-22 23:04:10 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-04-22 23:04:10 +0100
commit13d2c6b5847a4be36c52db4cf6eaeee0c36e4129 (patch)
tree9a49ba019e9b27a18020fb40803db41eda826ef0 /challenge-057/mohammad-anwar/perl
parent3c8543afe37fc92cc1b8aa1f7e88605c23965195 (diff)
downloadperlweeklychallenge-club-13d2c6b5847a4be36c52db4cf6eaeee0c36e4129.tar.gz
perlweeklychallenge-club-13d2c6b5847a4be36c52db4cf6eaeee0c36e4129.tar.bz2
perlweeklychallenge-club-13d2c6b5847a4be36c52db4cf6eaeee0c36e4129.zip
- Added Perl solutions to Find Unique Prefix.
Diffstat (limited to 'challenge-057/mohammad-anwar/perl')
-rw-r--r--challenge-057/mohammad-anwar/perl/ch-2.pl28
-rw-r--r--challenge-057/mohammad-anwar/perl/ch-2a.pl40
2 files changed, 68 insertions, 0 deletions
diff --git a/challenge-057/mohammad-anwar/perl/ch-2.pl b/challenge-057/mohammad-anwar/perl/ch-2.pl
new file mode 100644
index 0000000000..52281a6547
--- /dev/null
+++ b/challenge-057/mohammad-anwar/perl/ch-2.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $words = [ "alphabet", "book", "carpet", "cadmium", "cadeau", "alpine" ];
+my $unique = find_unique_prefix($words);
+
+print sprintf("[ %s ]\n", join(", ", @$unique));
+
+sub find_unique_prefix {
+ my ($words) = @_;
+
+ my $p = [];
+ foreach my $word (@$words) {
+ my $i = 1;
+ my $l = length($word);
+ while ($i < $l) {
+ my $char = substr($word, 0, $i);
+ my $count = scalar(grep { m/^$char/ } @$words);
+
+ ($count > 1) && $i++ and next;
+ push @$p, $char and last;
+ }
+ }
+
+ return $p;
+}
diff --git a/challenge-057/mohammad-anwar/perl/ch-2a.pl b/challenge-057/mohammad-anwar/perl/ch-2a.pl
new file mode 100644
index 0000000000..69b16a8817
--- /dev/null
+++ b/challenge-057/mohammad-anwar/perl/ch-2a.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Deep;
+
+my $unit_tests = [
+ { in => [ "alphabet", "book", "carpet", "cadmium", "cadeau", "alpine" ],
+ out => [ "alph", "b", "car", "cadm", "cade", "alpi" ]
+ }
+];
+
+foreach my $unit_test (@$unit_tests) {
+ my $in = $unit_test->{in};
+ my $out = $unit_test->{out};
+ is_deeply(find_unique_prefix($in), $out);
+}
+
+done_testing;
+
+sub find_unique_prefix {
+ my ($words) = @_;
+
+ my $p = [];
+ foreach my $word (@$words) {
+ my $i = 1;
+ my $l = length($word);
+ while ($i < $l) {
+ my $char = substr($word, 0, $i);
+ my $count = scalar(grep { m/^$char/ } @$words);
+
+ ($count > 1) && $i++ and next;
+ push @$p, $char and last;
+ }
+ }
+
+ return $p;
+}