Task 84. Анаграммы
UniLecsЗадача: анаграммой слова называется любая перестановка всех букв слова. Например, из слова СОЛО можно получить 12 анаграмм: СОЛО, ЛОСО, ОСЛО, ОЛСО, ОСОЛ, ОЛОС, СЛОО, ЛСОО, ООЛС, ООСЛ, ЛООС, СООЛ.
Необходимо написать функцию, ктр выведет кол-во различных анаграмм, ктр могут получиться из этого слова.
Входные данные: строка, кол-во символов не превышает 10.
Вывод: кол-во анаграмм.
Пример: СОЛО
Вывод: 12
Идея: это классическая задача из раздела комбинаторики, а конкретно, из раздела Перестановки с повторениями. Если у нас N различных элементов, то существует N! их различных перестановок. Если K нектр элементов идентичны, то кол-во перестановок уменьшается в K! раз.
Формула для перестановок с повторениями:
P(n1, n2, ..., nk) = n! / (n1! * n2! * ... * nk!)
Более детальную информацию вы можете найти:
Реализация:
https://gist.github.com/unilecs/fa35b1d4e6ba70011e834bbe9f4f1283
Тест: