Je veux garder une seule permutation parmi un ensemble de chaînes et compter l'occurrence de chaque permutation.
Pour rendre les choses plus claires, je veux transformer (par exemple)
ab
acf
ba
cfa
acf
dans
2 ab
3 acf
où 2 et 3 sont le nombre de permutations de {a, b} et {a, c, f} respectivement.
Comment le ferais-tu de la manière la plus simple possible?
Perl à la rescousse!
Perl -lne '$h{ join "", sort split // }++ }{ print "$h{$_} $_" for keys %h' < input_file
-n
lit l'entrée par ligne-l
supprime les nouvelles lignes de l'entrée, ajoute des nouvelles lignes à la sortiesplit //
divise la chaîne en caractèressort
les trie (donc l'unicité)join ""
crée une chaîne unique à partir de la liste de caractères%h
est une table de hachage, les clés sont les chaînes de caractères triés, les valeurs sont des nombres d'occurrences: augmentées (++
) à chaque rencontre.}{
"Message d'accueil Eskimo" - sépare le code à exécuter après la fin de la saisie