diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-04-22 23:04:10 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-04-22 23:04:10 +0100 |
| commit | 13d2c6b5847a4be36c52db4cf6eaeee0c36e4129 (patch) | |
| tree | 9a49ba019e9b27a18020fb40803db41eda826ef0 /challenge-057/mohammad-anwar/perl | |
| parent | 3c8543afe37fc92cc1b8aa1f7e88605c23965195 (diff) | |
| download | perlweeklychallenge-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.pl | 28 | ||||
| -rw-r--r-- | challenge-057/mohammad-anwar/perl/ch-2a.pl | 40 |
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; +} |
