Wyzwanie to opiera się na problemie opisanym w D. Parnas, O kryteriach, które należy zastosować przy rozkładaniu systemów na moduły , i rozwiniętych w J. Morris, Real Programming in Functional Languages .
Napisz program lub funkcję, która pobiera listę tytułów książek z stdin
lub jako argument, w rozsądnym, wygodnym formacie dla twojego języka. Na przykład,
Green Sleeves
Time Was Lost
lub
("Green Sleeves";"Time Was Lost")
Wróć lub wydrukuj na stdout
alfabetycznej liście słów kluczowych, pokazując ich kontekst w oryginalnych tytułach, umieszczając każde słowo kluczowe w nawiasach klamrowych ( <
i >
). Podobnie jak w przypadku danych wejściowych, dane wyjściowe mogą być w rozsądnym formacie, który jest wygodny dla linii oddzielonych językiem, wierszy itp.:
<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost
Tytuły będą się składały z szeregu słów kluczowych oddzielonych pojedynczym odstępem. Słowa kluczowe będą zawierać tylko znaki alfabetyczne. Słowa kluczowe należy posortować leksykograficznie . Tytuły będą unikalne, a słowa kluczowe będą unikalne w obrębie każdego tytułu, ale to samo słowo kluczowe może istnieć w kilku tytułach. Jeśli słowo kluczowe istnieje w więcej niż jednym tytule, dane wyjściowe powinny zawierać listę każdego wystąpienia w dowolnej kolejności . Na przykład, biorąc pod uwagę te dane wejściowe:
A Dugong
A Proboscis
Prawidłowy wynik to:
<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>
Lub:
<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>
To jest golf golfowy - zwycięzca jest najkrótszym rozwiązaniem w bajtach. Standardowe luki są niedozwolone.
Odpowiedzi:
Pyth,
252422 bajtówWypróbuj online.
Pobiera dane wejściowe jako tablicę wierszy, takich jak
["Green Sleeves","Time Was Lost"]
.Wyjaśnienie
źródło
Time Was Time
.keywords will be unique within each title
.Japt , 55 bajtów
Być może można to skrócić, ale nie jestem pewien, jak ...
Jak to działa
źródło
CJam,
413632 bajtówSprawdź to tutaj.
źródło
Haskell, 113 bajtów
Przykład użycia:
f ["Green Sleeves","Time Was Lost"]
->["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]
.źródło