note
BrowserUk
<blockquote><i>I can't tell if this has been updated.</i></blockquote>
<p>No. This is completely different code to my first attempt. I thought I had posted it, but it seems that I didn't.
<P>This is the code in its final form:<code>
#! perl -slw
use strict;
use List::Util qw[ reduce ];
use Data::Dump qw[ pp ];
sub canBeMadeFrom {
my( $sigRef, $word ) = @_;
for( split '', $word ) {
return unless exists $sigRef->{ $_ };
delete $sigRef->{ $_ };
}
return 1;
}
my %stats;
while( <> ) {
chomp;
next if length() > 8;
my $sig = join '', sort split '', $_;
push @{ $stats{ $sig } }, $_;
}
print STDERR scalar keys %stats;
my @eights = grep length() == 8, keys %stats;
my %eights; @eights{ @eights } = delete @stats{ @eights };
print my $i = @eights;
for my $eight ( keys %eights ) {
printf STDERR "\r%5d '%s'\t", $i--, $eight;
my %sig; undef @sig{ split '', $eight };
for my $lesser ( keys %stats ) {
next unless canBeMadeFrom( { %sig }, $lesser );
for my $word ( @{ $stats{ $lesser } } ) {
push @{ $eights{ $eight } }, $word if canBeMadeFrom( { %sig }, $word );
}
}
}
my @ordered = sort{
@{ $eights{ $b } } <=> @{ $eights{ $a } }
} keys %eights;
for( 0 .. $#ordered ) {
print "$ordered[ $_ ]: ", scalar @{ $eights{ $ordered[ $_ ] } };
print "@{ $eights{ $ordered[ $_ ] } }";
}
</code>
<div class="pmsig"><div class="pmsig-171588">
<hr />
<font size=1 >
<div>With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'</div>
<div>Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.</div>
<div>"Science is about questioning the status quo. Questioning authority". </div>
<div>In the absence of evidence, opinion is indistinguishable from prejudice.
</div>
</font>
</div></div>
1056884
1057026