Raku kurss / Pielikums 🆕 / Viss kopā / Jaukti miniprojekti / Exercises / Sagrupējiet anagrammas
Risinājums: Sagrupējiet anagrammas
Šeit ir iespējams risinājums uzdevumam.
Kods
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(' ');
}🦋 Atrodiet programmu failā anagram-groups.raku.
Izvade
act cat
dog
enlist listen silentKomentāri
Vārda burtu sakārtošana dod kanonisku atslēgu: visām anagrammām sakārtotie burti ir vienādi, tāpēc ielikšana
%groups{ ... }savāc tās zem vienas atslēgas. Pēc pirmā ciklasay %groupsparāda visu struktūru — katru kanonisko atslēgu, kas attēlota uz tās vārdu sarakstu:say %groups; # {act => [cat act], dgo => [dog], eilnst => [listen silent enlist]}
Katra jaucējtabulas vērtība ir šīs grupas vārdu saraksts, izdrukāts alfabētiski ar
.sort.join.