Esse desafio é baseado em um problema descrito em D. Parnas, Sobre os critérios a serem usados na decomposição de sistemas em módulos e elaborado em J. Morris, Programação Real em Linguagens Funcionais .
Escreva um programa ou função que tenha uma lista de títulos de livros stdin
ou como argumento, em um formato razoável e conveniente para o seu idioma. Por exemplo,
Green Sleeves
Time Was Lost
ou
("Green Sleeves";"Time Was Lost")
Retorne ou imprima para stdout
uma lista alfabética das palavras-chave, mostrando seu contexto nos títulos originais, colocando cada palavra-chave entre colchetes ( <
e >
). Como na entrada, a saída pode estar em um formato razoável, conveniente para o seu idioma - linhas separadas por nova linha, uma lista de cadeias, etc:
<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost
Os títulos consistirão em uma série de palavras-chave separadas por um único espaço. As palavras-chave conterão apenas caracteres alfabéticos. As palavras-chave devem ser classificadas lexicograficamente . Os títulos serão únicos e as palavras-chave serão únicas em cada título, mas a mesma palavra-chave poderá existir em vários títulos. Se uma palavra-chave existir em mais de um título, a saída deverá listar cada aparência em uma ordem arbitrária . Por exemplo, dada esta entrada:
A Dugong
A Proboscis
Uma saída válida seria:
<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>
Ou:
<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>
Este é o código-golfe - o vencedor é a solução mais curta em bytes. As brechas padrão não são permitidas.
Respostas:
Pitão,
252422 bytesExperimente online.
Recebe entrada como uma matriz de linhas, como
["Green Sleeves","Time Was Lost"]
.Explicação
fonte
Time Was Time
.keywords will be unique within each title
,.Japonês , 55 bytes
Talvez isso possa ser mais curto, mas não sei como ...
Como funciona
fonte
CJam,
413632 bytesTeste aqui.
fonte
Haskell, 113 bytes
Exemplo de uso:
f ["Green Sleeves","Time Was Lost"]
->["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]
.fonte