Эта задача основана на проблеме, описанной в 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>
Это код-гольф - победителем является самое короткое решение в байтах. Стандартные лазейки запрещены.
Ответы:
Pyth,
252422 байтаПопробуйте онлайн.
Принимает ввод в виде массива строк, например
["Green Sleeves","Time Was Lost"]
.объяснение
источник
Time Was Time
.keywords will be unique within each title
.Japt , 55 байт
Возможно, это можно сделать короче, но я не уверен, как ...
Как это работает
источник
CJam,
413632 байтаПроверьте это здесь.
источник
Haskell, 113 байт
Пример использования:
f ["Green Sleeves","Time Was Lost"]
->["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]
.источник