Эта задача основана на проблеме, описанной в D. Parnas, «О критериях, которые будут использоваться при разложении систем на модули» и разработанной в J. Morris, «Реальное программирование на функциональных языках» .
Напишите программу или функцию, которая берет список названий книг из stdin
или в качестве аргумента в разумном и удобном формате для вашего языка. Например,
Green Sleeves
Time Was Lost
или
("Green Sleeves";"Time Was Lost")
Вернуть или распечатать в stdout
алфавитном порядке список ключевых слов, отображая их контекст в исходных заголовках, заключив каждое ключевое слово в угловые скобки ( <
и >
). Как и при вводе, вывод может быть в приемлемом формате, который удобен для вашего языка - строки, разделенные новой строкой, список строк и т. Д .:
<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost
Заголовки будут состоять из ряда ключевых слов, разделенных одним пробелом. Ключевые слова будут содержать только буквенные символы. Ключевые слова должны быть отсортированы лексикографически . Названия будут уникальными, а ключевые слова будут уникальными в каждом заголовке, но одно и то же ключевое слово может существовать в нескольких заголовках. Если ключевое слово существует в более чем одном заголовке, выходные данные должны перечислять каждое появление в произвольном порядке . Например, учитывая этот вход:
A Dugong
A Proboscis
Действительный вывод будет либо:
<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>
Или:
<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>
Это код-гольф - победителем является самое короткое решение в байтах. Стандартные лазейки запрещены.