Contexte
Il y a trois ans, ce type Tom Murphy s'est mis en tête d'étendre l'idée d'un portemanteau à tous les mots dans une langue et a appelé cela un portmantout ( portmanteau plus tout [français pour tous ]). Définissant l'anglais comme une liste de 108 709 mots, il a réussi à trouver une séquence de 611 820 lettres avec les deux propriétés suivantes:
- Chaque mot anglais est contenu dans la chaîne.
- Un quartier contenant deux lettres adjacentes dans la chaîne est un mot anglais.
Voici un lien vers une page sur laquelle ce portmantout peut être trouvé (avec une explication vidéo).
Un portemantout
La première des deux propriétés d'un portmantout est facile à comprendre. La seconde peut nécessiter quelques explications.
Fondamentalement, les mots doivent se chevaucher. "golfcode" n'apparaîtra jamais dans un portmantout de l'anglais, car il n'y a aucun mot qui contient le "fc". Cependant, vous pouvez trouver "codegolf" dans un portmantout, car "ego" comble l'écart (et toutes les autres paires de lettres sont soit en "code" soit en "golf").
Ta tâche:
Écrivez un programme ou une fonction qui prend une liste de chaînes et renvoie tout portmantout de la liste.
Ce code Python 3 vérifiera un portmantout.
Cas de test
Toutes les listes ne sont pas ordonnées; C'est,
{"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
Et pourquoi pas? L'énorme sur le site de Murphy, si votre code s'exécute dans un délai raisonnable.
Règles
- Votre code doit s'arrêter.
- Vous n'avez pas besoin de renvoyer le même portmantout à chaque exécution.
- Vous pouvez prendre toutes les chaînes se composent de lettres minuscules seulement
a
parz
. - Si aucun portmantout n'est possible, votre programme peut faire n'importe quoi. Ex:
{"most", "short", "lists"}
- Les règles standard pour les E / S et les failles s'appliquent.
Il s'agit de code-golf , donc la solution la plus courte (en octets) dans chaque langue gagne! Bon golf!
{"sic", "bar", "rabbits", "cradle"} -> "barabbitsicradle"
{"mauve", "elated", "cast", "electric", "tame"} -> "mauvelectricastamelated"
(plus de cas de test)