Ein pangram ist eine Zeichenfolge , die jeden Buchstaben enthält a
- z
die englische Alphabet, Groß- und Kleinschreibung. (Es ist in Ordnung, wenn das Pangram mehr als eine Kopie eines Buchstabens enthält oder wenn es zusätzlich zu den Buchstaben Zeichen enthält, die keine Buchstaben sind.)
Schreiben Sie ein Programm oder eine Funktion, deren Eingabe eine Liste von Zeichenfolgen ist und die eine oder mehrere Zeichenfolgen mit den folgenden Eigenschaften ausgibt:
- Jede Ausgabezeichenfolge muss ein Pangram sein.
- Jede Ausgabezeichenfolge muss durch Verketten einer oder mehrerer Zeichenfolgen aus der Eingabeliste gebildet werden, die durch Leerzeichen getrennt sind.
- Jede Ausgabezeichenfolge muss die kürzeste oder die kürzeste unter allen Zeichenfolgen mit diesen Eigenschaften sein.
Viele Programme geben nur eine Zeichenfolge aus. Sie möchten nur mehr als eine Zeichenfolge ausgeben, wenn Sie ansonsten zusätzlichen Code schreiben müssten, um die Ausgabe zu begrenzen.
Sie können davon ausgehen, dass die Eingabe keine nicht druckbaren Zeichen oder Leerzeichen enthält und dass kein Wort mehr als (26-mal der natürliche Logarithmus der Länge der Liste) Zeichen lang ist. (Sie dürfen jedoch nicht davon ausgehen, dass die Eingabe nur Buchstaben oder nur Kleinbuchstaben enthält. Satzzeichen und Großbuchstaben sind durchaus möglich.)
Eingabe und Ausgabe können in jedem vernünftigen Format erfolgen. Zum Testen Ihres Programms empfehle ich die Verwendung von zwei Testfällen: einem Wörterbuch mit englischen Wörtern (die meisten Computer haben einen) und dem folgenden Fall (für den ein perfektes Pangram (26 Buchstaben) unmöglich ist, sodass Sie einen finden müssen) mit doppelten Buchstaben):
abcdefghi
defghijkl
ijklmnop
lmnopqrs
opqrstuvw
rstuvwxyz
Sie sollten Ihrer Einreichung ein Beispiel der Ausgabe Ihres Programms beifügen. (Dies kann für verschiedene Personen aufgrund der Verwendung unterschiedlicher Wortlisten durchaus unterschiedlich sein.)
Siegbedingung
Dies ist eine Code-Golf- Herausforderung mit eingeschränkter Komplexität . Der Gewinner ist das kürzeste Programm (in Bytes), das in Polynomzeit ausgeführt wird . (Eine Zusammenfassung für Personen, die nicht wissen, was das bedeutet: Wenn Sie die Größe der Wortliste verdoppeln, sollte das Programm nur um einen konstanten Faktor langsamer werden. Der betreffende konstante Faktor kann jedoch so groß sein wie Sie Zum Beispiel ist es gültig, dass es viermal langsamer oder achtmal langsamer wird, aber nicht, dass es um einen Faktor der Länge der Wortliste kleiner wird; der Faktor, über den es langsamer wird, muss begrenzt werden.)