Hintergrund
Vor drei Jahren hatte sich der Typ Tom Murphy vorgenommen , die Idee eines Portmanteaus auf alle Wörter einer Sprache auszudehnen und nannte dies Portmantout ( Portmanteau plus tout [Französisch für alle ]). Er definierte Englisch als Liste von 108.709 Wörtern und fand eine Folge von 611.820 Buchstaben mit den folgenden zwei Eigenschaften:
- Jedes englische Wort ist in der Zeichenfolge enthalten.
- Eine Nachbarschaft, die zwei benachbarte Buchstaben in der Zeichenfolge enthält, ist ein englisches Wort.
Hier ist ein Link zu einer Seite, auf der dieses Portmantout zu finden ist (zusammen mit einer Videoerklärung).
Ein Portmantout
Die erste der beiden Eigenschaften eines Portmantouts ist leicht zu verstehen. Die zweite kann eine Erklärung erfordern.
Grundsätzlich müssen sich Wörter überlappen. "golfcode" wird niemals in einem englischen Portmantout erscheinen, da es dort kein Wort gibt, das das "fc" enthält. Es kann jedoch vorkommen, dass Sie in einem Portmantout "Codegolf" finden, denn "Ego" überbrückt die Lücke (und alle anderen Buchstabenpaare sind entweder in "Code" oder "Golf" enthalten).
Deine Aufgabe:
Schreiben Sie ein Programm oder eine Funktion, die eine Liste von Zeichenfolgen aufnimmt und einen beliebigen Portmantout der Liste zurückgibt.
Dieser Python 3-Code überprüft einen Portmantout.
Testfälle
Alle Listen sind ungeordnet. das ist,
{"code", "ego", "golf"} -> "codegolf"
{"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or...
Would a morelmaniac be some sort of mycologist?
{"ab", "bc", "cd", "de", "ef", "fg", "gh", "hi", "ij", "jk", "kl", "lm", "mn", "no", "op", "pq", "qr", "rs", "st", "tu", "uv", "vw", "wx", "xy", "yz", "za"} -> "abcdefghijklmnopqrstuvwxyza" or "rstuvwxyzabcdefghijklmnopqrstuvwxyzabcdef" or any 27+ letters in order
Und warum nicht? Die massive auf Murphys Website, wenn Ihr Code innerhalb angemessener Zeit ausgeführt wird.
Regeln
- Ihr Code muss anhalten.
- Sie müssen nicht bei jeder Ausführung dasselbe Portmantout zurückgeben.
- Sie können alle Saiten bestehen aus nur Kleinbuchstaben annehmen
a
durchz
. - Wenn kein Portmantout möglich ist, kann Ihr Programm alles tun. Ex:
{"most", "short", "lists"}
- Es gelten die Standardregeln für E / A und Lücken .
Das ist Code-Golf , also gewinnt die kürzeste Lösung (in Bytes) in jeder Sprache! Viel Spaß beim Golfen!
{"sic", "bar", "rabbits", "cradle"} -> "barabbitsicradle"
{"mauve", "elated", "cast", "electric", "tame"} -> "mauvelectricastamelated"
(weitere Testfälle)