in reply to minimal superstrings/maximal substrings
use strict; use warnings; use Data::Dump qw/pp dd/; my @words = data(); my (%lower,%super); for my $word ( sort {length $a <=> length $b} @words ) { SUPER: for my $sub ( keys %lower ) { if ( -1 != index ($word,$sub) ) { for ( @{$super{$sub}} ) { next SUPER if -1 < index ($word,$_) } push @{$super{$sub}},$word; } } $lower{$word}=1; } #pp \%super; for my $key ( keys %super ) { if (length $key >8) { delete $super{$key}; next; } $super{$key} = [grep { length $_ > 8 } @{$super{$key}}]; } pp \%super; sub data { return "funk", "fungibles", "funneling", "fundraiser", "fungi", "functions", "fun", "fundamental", "functioned", "functional", "functioning", "funicular", "funnel", "functionaries", "functionary", "funkiness", "function", "fungicidal", "fungible", "fungicide", "fundraising", "funniness", "fund", "funereal", "funereally","fundraising-team", }
{ fun => ["funicular", "funniness"], function => [ "functions", "functioned", "functional", "functioning", "functionary", "functionaries", ], fund => ["fundraiser", "fundamental", "fundraising"], funereal => ["funereally"], fungi => ["fungicide", "fungicidal"], fungible => ["fungibles"], funk => ["funkiness"], funnel => ["funneling"], }
Disclaimer: data mostly stole from tybalt89 :)
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
FootballPerl is like chess, only without the dice
|
---|