aboutsummaryrefslogtreecommitdiff
path: root/challenge-057
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-057')
-rw-r--r--challenge-057/mark-anderson/perl/ch-2.pl22
-rw-r--r--challenge-057/mark-anderson/raku/ch-2.p615
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;
}
}