Corso di Raku / Appendice 🆕 / Mettere tutto insieme / Mini-progetti misti / Exercises / Raggruppate gli anagrammi
Soluzione: Raggruppate gli anagrammi
Ecco una possibile soluzione del compito.
Codice
my @words = <listen silent enlist cat act dog>;
my %groups;
for @words -> $word {
%groups{ $word.comb.sort.join }.push($word);
}
for %groups.sort(*.key) -> $pair {
say $pair.value.sort.join(' ');
}🦋 Trova il programma nel file anagram-groups.raku.
Output
act cat
dog
enlist listen silentCommenti
Ordinare le lettere di una parola dà una chiave canonica: tutti gli anagrammi condividono le stesse lettere ordinate, quindi spingerli in
%groups{ ... }li raccoglie sotto un’unica chiave. Dopo il primo ciclo,say %groupsmostra l’intera struttura — ogni chiave canonica con la propria lista di parole:say %groups; # {act => [cat act], dgo => [dog], eilnst => [listen silent enlist]}
Ogni valore dell’hash è la lista delle parole di quel gruppo, stampata in ordine alfabetico con
.sort.join.