Diese Herausforderung basiert auf einem Problem, das in D. Parnas, Über die Kriterien für die Zerlegung von Systemen in Module , beschrieben und in J. Morris, Real Programming in Functional Languages , erläutert wurde .
Schreiben Sie ein Programm oder eine Funktion, die eine Liste von Buchtiteln aus stdin
oder als Argument in einem für Ihre Sprache angemessenen, praktischen Format verwendet. Zum Beispiel,
Green Sleeves
Time Was Lost
oder
("Green Sleeves";"Time Was Lost")
Kehren Sie zu stdout
einer alphabetischen Liste der Schlüsselwörter zurück oder drucken Sie sie aus. Zeigen Sie deren Kontext innerhalb der Originaltitel an, indem Sie jedes Schlüsselwort in spitze Klammern ( <
und >
) setzen. Wie bei der Eingabe kann die Ausgabe in einem angemessenen Format erfolgen, das für Ihre durch Zeilenumbrüche getrennten Zeilen, eine Liste von Zeichenfolgen usw. geeignet ist:
<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost
Titel bestehen aus einer Reihe von Schlüsselwörtern, die durch ein einzelnes Leerzeichen getrennt sind. Schlüsselwörter enthalten nur alphabetische Zeichen. Schlüsselwörter sind lexikographisch zu sortieren . Titel sind eindeutig und Schlüsselwörter sind in jedem Titel eindeutig, aber dasselbe Schlüsselwort kann in mehreren Titeln vorhanden sein. Wenn ein Schlüsselwort in mehr als einem Titel vorhanden ist, sollte die Ausgabe jedes Erscheinungsbild in einer beliebigen Reihenfolge auflisten . Zum Beispiel bei dieser Eingabe:
A Dugong
A Proboscis
Eine gültige Ausgabe wäre entweder:
<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>
Oder:
<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>
Dies ist Code-Golf - der Gewinner ist die kürzeste Lösung in Bytes. Standardlücken sind nicht zulässig.
Antworten:
Pyth,
252422 BytesProbieren Sie es online aus.
Nimmt die Eingabe als Array von Zeilen wie
["Green Sleeves","Time Was Lost"]
.Erläuterung
quelle
Time Was Time
.keywords will be unique within each title
.Japt , 55 Bytes
Vielleicht könnte dies kürzer gemacht werden, aber ich bin nicht sicher, wie ...
Wie es funktioniert
quelle
CJam,
413632 BytesTesten Sie es hier.
quelle
Haskell, 113 Bytes
Anwendungsbeispiel:
f ["Green Sleeves","Time Was Lost"]
->["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]
.quelle