Pangram jest ciąg znaków, który zawiera wszystkie litery a
- z
z alfabetu angielskiego, bez uwzględniania wielkości liter. (Jest ok, jeśli pangram zawiera więcej niż jedną kopię litery lub jeśli oprócz liter zawiera znaki inne niż litery).
Napisz program lub funkcję, której wejściem jest lista ciągów i które wypisuje jeden lub więcej ciągów, które mają następujące właściwości:
- Każdy ciąg wyjściowy musi być pangramem.
- Każdy ciąg wyjściowy musi zostać utworzony przez połączenie jednego lub więcej ciągów z listy wejściowej, oddzielonych spacjami.
- Każdy ciąg wyjściowy musi być najkrótszy lub powiązany najkrótszym spośród wszystkich ciągów o tych właściwościach.
Wiele programów wybiera wyświetlanie tylko jednego ciągu; chciałbyś wypisać więcej niż jeden ciąg, jeśli w innym przypadku musiałbyś napisać dodatkowy kod, aby ograniczyć wynik.
Możesz założyć, że dane wejściowe nie zawierają żadnych niedrukowalnych znaków ani spacji i że żadne słowo nie ma więcej niż (26-krotność naturalnego logarytmu długości listy) znaków. (Nie możesz jednak zakładać, że dane wejściowe zawierają tylko litery lub tylko małe litery; znaki interpunkcyjne i wielkie litery są całkowicie możliwe.)
Dane wejściowe i wyjściowe można podawać w dowolnym rozsądnym formacie. Do testowania twojego programu zalecam użycie dwóch przypadków testowych: słownika angielskich słów (większość komputerów ma jeden) oraz następującego przypadku (dla którego idealny (26-literowy) pangram jest niemożliwy, więc musisz go znaleźć zawierające zduplikowane litery):
abcdefghi
defghijkl
ijklmnop
lmnopqrs
opqrstuvw
rstuvwxyz
Do zgłoszenia należy dołączyć próbkę danych wyjściowych programu. (Może to być różne dla różnych osób w wyniku używania różnych list słów).
Warunek zwycięstwa
Jest to wyzwanie polegające na kodzie golfowym o złożonej strukturze . Zwycięzcą jest najkrótszy program (w bajtach), który działa w czasie wielomianowym . (Podsumowanie dla osób, które nie wiedzą, co to znaczy: jeśli podwoisz rozmiar listy słów, program powinien stać się wolniejszy o nie więcej niż stały współczynnik. Jednak stały współczynnik, o którym mowa, może być tak duży, jak ty np. ważne jest, aby stała się czterokrotnie wolniejsza lub ośmiokrotnie wolniejsza, ale nie może być mniejsza o współczynnik długości listy słów; czynnik, przez który staje się wolniejszy, musi być ograniczony).