Ce défi est basé sur un problème décrit dans D. Parnas, Sur les critères à utiliser dans la décomposition des systèmes en modules , et développé dans J. Morris, Real Programming in Functional Languages .
Écrivez un programme ou une fonction qui prend une liste de titres de livres de stdin
ou comme argument, dans un format raisonnable et pratique pour votre langue. Par exemple,
Green Sleeves
Time Was Lost
ou
("Green Sleeves";"Time Was Lost")
Retournez ou imprimez dans stdout
une liste alphabétique des mots-clés, montrant leur contexte dans les titres originaux en mettant chaque mot-clé entre accolades ( <
et >
). Comme pour l'entrée, la sortie peut être dans un format raisonnable qui convient à vos lignes séparées par une nouvelle ligne de langue, une liste de chaînes, etc.:
<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost
Les titres seront constitués d'une série de mots clés séparés par un seul espace. Les mots clés ne contiendront que des caractères alphabétiques. Les mots clés doivent être triés lexicographiquement . Les titres seront uniques et les mots clés seront uniques dans chaque titre, mais le même mot clé peut exister dans plusieurs titres. Si un mot clé existe dans plusieurs titres, la sortie doit répertorier chaque apparence dans un ordre arbitraire . Par exemple, étant donné cette entrée:
A Dugong
A Proboscis
Une sortie valide serait soit:
<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>
Ou:
<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>
C'est le code-golf - le gagnant est la solution la plus courte en octets. Les failles standard ne sont pas autorisées.
Réponses:
Pyth,
252422 octetsEssayez-le en ligne.
Prend l'entrée comme un tableau de lignes, comme
["Green Sleeves","Time Was Lost"]
.Explication
la source
Time Was Time
.keywords will be unique within each title
.Japt , 55 octets
Peut-être que cela pourrait être raccourci, mais je ne sais pas comment ...
Comment ça fonctionne
la source
CJam,
413632 octetsTestez-le ici.
la source
Haskell, 113 octets
Exemple d'utilisation:
f ["Green Sleeves","Time Was Lost"]
->["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]
.la source