sfondo
Tre anni fa, questo ragazzo Tom Murphy si è messo in testa per estendere l'idea di un portmanteau a tutte le parole in una lingua e lo ha definito un portmantout ( portmanteau plus tout [francese per tutti ]). Definendo l'inglese come un elenco di 108.709 parole, è riuscito a trovare una sequenza di 611.820 lettere con le seguenti due proprietà:
- Ogni parola inglese è contenuta nella stringa.
- Un quartiere che contiene due lettere adiacenti nella stringa è una parola inglese.
Ecco un link a una pagina in cui è possibile trovare questo portmantout (insieme a una spiegazione video).
Un portmantout
La prima delle due proprietà di un portmantout è di facile comprensione. Il secondo potrebbe richiedere alcune spiegazioni.
Fondamentalmente, le parole devono sovrapporsi. "golfcode" non apparirà mai in un portmantout di inglese, in quanto non vi è alcuna parola che contenga "fc". Tuttavia, potresti trovare "codegolf" in un portmantout, poiché "ego" colma il divario (e tutte le altre coppie di lettere sono in "codice" o "golf").
Il tuo compito:
Scrivi un programma o una funzione che accetta un elenco di stringhe e restituisce qualsiasi portmantout dell'elenco.
Questo codice Python 3 verificherà un portmantout.
Casi test
Tutti gli elenchi non sono ordinati; questo è,
{"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
E perchè no? Quello massiccio sul sito di Murphy, se il tuo codice viene eseguito in tempi ragionevoli.
Regole
- Il tuo codice deve arrestarsi.
- Non è necessario restituire lo stesso portmantout ad ogni esecuzione.
- Si può assumere tutte le stringhe sono costituite da solo lettere minuscole
a
attraversoz
. - Se non è possibile effettuare il portmantout, il programma potrebbe fare qualsiasi cosa. Ex:
{"most", "short", "lists"}
- Si applicano le norme standard per I / O e scappatoie .
Questo è code-golf , quindi vince la soluzione più breve (in byte) in ogni lingua! Buon golf!
{"sic", "bar", "rabbits", "cradle"} -> "barabbitsicradle"
{"mauve", "elated", "cast", "electric", "tame"} -> "mauvelectricastamelated"
(altri casi di test)