diff options
| -rw-r--r-- | challenge-057/mark-anderson/perl/ch-2.pl | 22 | ||||
| -rw-r--r-- | challenge-057/mark-anderson/raku/ch-2.p6 | 8 |
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; } |
