aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-057/mark-anderson/perl/ch-2.pl22
-rw-r--r--challenge-057/mark-anderson/raku/ch-2.p68
2 files changed, 27 insertions, 3 deletions
diff --git a/challenge-057/mark-anderson/perl/ch-2.pl b/challenge-057/mark-anderson/perl/ch-2.pl
new file mode 100644
index 0000000000..eb1ffc2f30
--- /dev/null
+++ b/challenge-057/mark-anderson/perl/ch-2.pl
@@ -0,0 +1,22 @@
+#!/usr/bin/env perl
+use Modern::Perl;
+
+my @words = qw/alphabet book carpet cadmium cadeau alpine/;
+
+my @prefixes;
+
+for my $word (@words) {
+ my $length;
+ my $prefix;
+ my @rest = @words;
+
+ do {
+ $length++;
+ $prefix = substr($word, 0, $length);
+ @rest = grep { /^$prefix/ } @rest;
+ } while @rest > 1;
+
+ push (@prefixes, $prefix);
+}
+
+say join(", ", @prefixes);
diff --git a/challenge-057/mark-anderson/raku/ch-2.p6 b/challenge-057/mark-anderson/raku/ch-2.p6
index eb203a884b..bff25c9047 100644
--- a/challenge-057/mark-anderson/raku/ch-2.p6
+++ b/challenge-057/mark-anderson/raku/ch-2.p6
@@ -4,13 +4,15 @@ my @words = <alphabet book carpet cadmium cadeau alpine>;
my @prefixes = gather {
for @words -> $word {
+ my $length;
my $prefix;
- my $length = 0;
+ my @rest = @words;
repeat {
$length++;
- $prefix = $word.substr(0, $length);
- } while @words.grep(* ne $word) ~~ / ^ $prefix /;
+ $prefix = $word.substr(0, $length);
+ @rest = @rest.grep(/^$prefix/);
+ } while @rest > 1;
take $prefix;
}