Hop, deux solutions de plus (testées
) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| my @liste=qw (abattre abattu abattus abbatial abbaye abbé);
foreach my $mot (@liste) {
my @lettres=split (//, $mot);
my @tri = map { join('', @lettres[$_..($_+2)]) } (0..(@lettres-3));
print "Liste des trigrammes pour $mot :\n";
print " $_" foreach (@tri);
print "\n";
}
foreach my $mot (@liste) {
my @tri = map { substr ($mot, $_, 3) } (0..(length($mot)-3));
print "Liste des trigrammes pour $mot :\n";
print " $_" foreach (@tri);
print "\n";
} |
Dans le premier cas, il s'agissait de s'amuser un peu avec map et des tranches de tableau. 
Dans le deuxième, beaucoup plus pragmatique, on balaye le mot pour générer les trigrammes à coup de substr.
Si j'ai aussi utilisé map dans le second cas, c'est car je préfère faire un
my @liste = map { truc_avec_$_ } @liste;
plutot qu'un
1 2
| my @liste;
push (@liste, truc_avec_$_) foreach (@liste); |
Question de goût. 8)
Partager