diff options
Diffstat (limited to 'challenge-057')
| -rw-r--r-- | challenge-057/mark-anderson/perl/ch-2.pl | 22 | ||||
| -rw-r--r-- | challenge-057/mark-anderson/raku/ch-2.p6 | 15 |
2 files changed, 8 insertions, 29 deletions
diff --git a/challenge-057/mark-anderson/perl/ch-2.pl b/challenge-057/mark-anderson/perl/ch-2.pl deleted file mode 100644 index eb1ffc2f30..0000000000 --- a/challenge-057/mark-anderson/perl/ch-2.pl +++ /dev/null @@ -1,22 +0,0 @@ -#!/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 bff25c9047..227d526b9a 100644 --- a/challenge-057/mark-anderson/raku/ch-2.p6 +++ b/challenge-057/mark-anderson/raku/ch-2.p6 @@ -1,20 +1,21 @@ #!/usr/bin/env raku +use Trie; -my @words = <alphabet book carpet cadmium cadeau alpine>; +my $trie = Trie.new; + +$trie.insert: $_ for <alphabet book carpet cadmium cadeau alpine>; my @prefixes = gather { - for @words -> $word { + for ^$trie.elems -> $i { my $length; my $prefix; - my @rest = @words; repeat { $length++; - $prefix = $word.substr(0, $length); - @rest = @rest.grep(/^$prefix/); - } while @rest > 1; + $prefix = $trie[$i].substr(0, $length); + } while ($trie.get-all: $prefix).elems > 1; - take $prefix; + take $prefix; } } |
