use strict;
my $dict;
my %anagrams;
open($dict, '<', 'wordlist-preao-latest.txt');
while (my $word=<$dict>) {
chomp $word;
my $index=$word;
$index=~s/\-//g;
my $sorted = join "", sort split //, $index;
push @{$anagrams{$sorted}}, $word;
}
for my $words (values %anagrams) {
print "@$words\n" if @$words>1;
}
Modifiquei o código para que ignorasse os traços. O dicionário que encontrei possui, inclusivamente, todas as conjugações dos verbos.
O campeão de variações (22) foi este:
amestrei eremitas estiar-me estreiam
estremai mastreei mastreie meterias
rasteiem remateis remetais remetias
reteimas ser-te-iam seriam-te teimar-se
teimares temerias ter-me-ias ter-se-iam
teriam-se terias-me
E os anagramas mais longos não são muito interessantes, porque a maioria é de diferentes conjugações. O mais longo é:
transcendentalizar-lhe-ias transcendentalizar-lhes-ia
E há muitos desses antes deste:
constitucionalizardes desconstitucionalizar
Pelo menos são verbos diferentes.Com uma pequena adição ao programa, gerei um arquivo com todos os anagramas (um por linha) ordenados por ordem decrescente de comprimento:
my @sorted= sort { length $b <=> length $a } keys %anagrams;
for my $i (0..$#sorted) {
if(scalar(@{$anagrams{$sorted[$i]}})>1) {
print join ' ',@{$anagrams{$sorted[$i]}};
print "\n";
}
}
São mais de 114 mil linhas e cerca de 3MB. A evolução natural é transformar isso num webservice e vender o AaaS (Anagrams as a Service).
Nenhum comentário:
Postar um comentário