Слово anagram, если буквы в этом слове могут быть перегруппированы, чтобы сформировать другое слово.
Задача:
- Самый короткий исходный код по количеству символов, чтобы найти все наборы анаграмм с учетом списка слов.
- Пробелы и новые строки должны считаться символами
-
Используйте линейку кодов
--------- 10 -------- 20 -------- 30 -------- 40 -------- 50- ------- 60 -------- 70 -------- 80 -------- 90 -------- 100 ------ -110 ------- 120
Вход:
a список слов из stdin с каждым словом, разделенным новой строкой.
например.
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 plum's
dewar wader's
postman tampons
dent tend
macho mocha
stoker stroke's
hops posh shop
chasity scythia
...
У меня есть решение 149 char perl, которое я выложу, как только опубликует еще несколько человек:)
Удачи!
РЕДАКТИРОВАТЬ: Уточнения
- Предположим, что анаграммы нечувствительны к регистру (т.е. буквы верхнего и нижнего регистра эквивалентны)
- Должны быть напечатаны только наборы с более чем 1 элементом.
- Каждый набор анаграмм следует печатать только один раз
- Каждое слово в наборе анаграмм должно появляться только один раз
EDIT2: Дополнительные разъяснения
- Если два слова отличаются только капитализацией, они должны быть свернуты в одно и то же слово, и вам решать, какая схема капитализации использовать для спящего слова
- набор слов должен заканчиваться только в новой строке, если каждое слово разделено каким-либо образом, например. разделенные запятыми или разделенные пробелы. Я понимаю, что некоторые языки имеют встроенные методы печати массива, поэтому это должно позволить вам воспользоваться этим, если оно не выводит массивы, разделенные пробелами.