Слово является анаграммой, если буквы в этом слове можно переставить, чтобы образовать другое слово. .
Задача:
Самый короткий исходный код по количеству символов для поиска всех наборов анаграмм по списку слов.
Пробелы и новые строки должны считаться символами
Используйте линейку кода
---------10--------20--------30--------40--------50--------60--------70--------80--------90--------100-------110-------120
Вход:
список слов из стандартного ввода, где каждое слово отделено новой строкой.
e.g.
A
A's
AOL
AOL's
Aachen
Aachen's
Aaliyah
Aaliyah's
Aaron
Aaron's
Abbas
Abbasid
Abbasid's
Вывод:
Все наборы анаграмм, каждый набор разделен отдельной строкой.
Пример выполнения:
./anagram < words
marcos caroms macros
lump's plum's
dewar's wader's
postman tampons
dent tend
macho mocha
stoker's stroke's
hops posh shop
chasity scythia
...
У меня есть решение на 149 символов на perl, которое я опубликую, как только опубликуют еще несколько человек :)
Развлекайся!
РЕДАКТИРОВАТЬ: Разъяснения
- Предположим, что анаграммы нечувствительны к регистру (т.е. буквы верхнего и нижнего регистра эквивалентны)
- Следует печатать только наборы с более чем 1 шт.
- Каждый набор анаграмм следует распечатывать только один раз.
- Каждое слово в наборе анаграмм должно встречаться только один раз.
EDIT2: дополнительные пояснения
- Если два слова различаются только заглавными буквами, они должны быть свернуты в одно и то же слово, и вам решать, какую схему использования заглавных букв использовать для свернутого слова.
- наборы слов должны заканчиваться только новой строкой, если каждое слово каким-либо образом разделено, например допустимы разделенные запятыми или пробелами. Я понимаю, что в некоторые языки встроены методы быстрой печати массивов, поэтому это должно позволить вам воспользоваться этим, если он не выводит массивы, разделенные пробелами.