Suffix tree: Difference between revisions

Content added Content deleted
m (J: remove irrelevant parenthesis)
m (Perl: simplify)
Line 191:
use warnings;
use Data::Dumper;
 
sub classify {
my ($f, $h) = (shift, {});
for (@_) { push @{$h->{$f->substr($_,0,1)}}, $_ }
return $h;
}
Line 202:
}
sub suffix_tree {
return +{} if (@_ == 0;) {
print Dumper([{},@_]);
return +{};
}
print Dumper([{ $_[0] => +{} },@_]) if @_ == 1;
return +{ $_[0] => +{} } if @_ == 1;
my $h = {};
my $classif = classify sub { substr shift, 0, 1 }, @_;
for my $key (sort keys %$classif) {
my $subtree = suffix_tree(
grep "$_", map { substr $_, 1 } @{$classif->{$key}}
);
my @subkeys = keys %$subtree;
if (@subkeys == 1) {
my ($subkey) = shift @subkeys;
$h->{"$key$subkey"} = $subtree->{$subkey};
} else { $h->{$key} = $subtree }
}
print Dumper([$h,@_]);
return $h;
}
 
print +Dumper suffix_tree suffixes 'banana$';</lang>
{{out}}