Este desafío se basa en un problema descrito en D. Parnas, sobre los criterios que se utilizarán en los sistemas de descomposición en módulos , y elaborado en J. Morris, Programación real en lenguajes funcionales .
Escriba un programa o función que tome una lista de títulos de libros de stdin
o como argumento, en un formato razonable y conveniente para su idioma. Por ejemplo,
Green Sleeves
Time Was Lost
o
("Green Sleeves";"Time Was Lost")
Regrese o imprima en stdout
una lista alfabética de las palabras clave, mostrando su contexto dentro de los títulos originales encerrando cada palabra clave entre llaves ( <
y >
). Al igual que con la entrada, la salida puede estar en un formato razonable que sea conveniente para su idioma: líneas separadas por una nueva línea, una lista de cadenas, etc.
<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost
Los títulos consistirán en una serie de palabras clave separadas por un solo espacio. Las palabras clave contendrán solo caracteres alfabéticos. Las palabras clave deben clasificarse lexicográficamente . Los títulos serán únicos y las palabras clave serán únicas dentro de cada título, pero la misma palabra clave puede existir en varios títulos. Si existe una palabra clave en más de un título, la salida debe enumerar cada aspecto en un orden arbitrario . Por ejemplo, dada esta entrada:
A Dugong
A Proboscis
Una salida válida sería:
<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>
O:
<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>
Este es el código de golf : el ganador es la solución más corta en bytes. Las lagunas estándar no están permitidas.
Respuestas:
Pyth,
252422 bytesPruébalo en línea.
Toma la entrada como una matriz de líneas, como
["Green Sleeves","Time Was Lost"]
.Explicación
fuente
Time Was Time
.keywords will be unique within each title
.Japt , 55 bytes
Tal vez esto podría hacerse más corto, pero no estoy seguro de cómo ...
Cómo funciona
fuente
CJam,
413632 bytesPruébalo aquí.
fuente
Haskell, 113 bytes
Ejemplo de uso:
f ["Green Sleeves","Time Was Lost"]
->["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]
.fuente