Kurso de Raku / Aldono 🆕 / Ĉio kune / Miksitaj mini-projektoj / Exercises / Grupigu la anagramojn
Solvo: Grupigu la anagramojn
Jen ebla solvo de la tasko.
Kodo
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(' ');
}🦋 Vi povas trovi la fontkodon en la dosiero anagram-groups.raku.
Eligo
act cat
dog
enlist listen silentKomentoj
Ordigi la literojn de vorto donas kanonan ŝlosilon: ĉiuj anagramoj kunhavas la samajn ordigitajn literojn, do puŝi sur
%groups{ ... }kolektas ilin sub unu ŝlosilo. Post la unua buklo,say %groupsmontras la tutan strukturon — ĉiu kanona ŝlosilo mapanta al sia listo de vortoj:say %groups; # {act => [cat act], dgo => [dog], eilnst => [listen silent enlist]}
Ĉiu haketmapa valoro estas la listo de vortoj en tiu grupo, presata alfabete per
.sort.join.