Étant donné un fichier de dictionnaire (un fichier texte contenant un mot ou une phrase sur chaque ligne, avec une ponctuation possible mais pas de chiffres; les lignes sont alphabétisées), vous devez sortir chaque combinaison de mots où une lettre peut être supprimée d'un mot pour en faire une autre; la lettre supprimée doit être placée entre parenthèses.
Par exemple, l'entrée
cat
cart
code
golf
ode
verify
versify
devrait donner une sortie de
ca(r)t
(c)ode
ver(s)ify
Plusieurs façons d'obtenir la même paire ne doivent être affichées qu'une seule fois. Vous pouvez sortir scra(p)ped
ou scrap(p)ed
, mais pas les deux.
La sortie doit être classée par ordre alphabétique par l'entrée la plus longue;
mart
mar
mat
ma
devrait avoir une sortie de
ma(r)
ma(t)
ma(r)t
mar(t)
et les deux derniers pourraient être dans l'un ou l'autre ordre.
Le fichier de dictionnaire peut inclure des majuscules, des espaces, des tirets ou des apostrophes; ceux-ci doivent être ignorés. Par exemple,
inlay
in-play
devrait produire in(p)lay
. Votre sortie doit être dans le même cas. Des espaces supplémentaires sont autorisés.
L'entrée peut être STDIN ou à partir d'un fichier; il est séparé par des retours à la ligne. La sortie peut être la valeur de retour d'une fonction ou STDOUT (ou écrite dans un fichier si vous le souhaitez).
Il s'agit de code-golf , donc le code le plus court en octets l'emporte.
(C'est mon premier défi sur PPCG - faites-moi savoir si j'ai fait quelque chose de mal et je le corrigerai.)
mart mar mat ma
? Serait-cemar(t) ma(r)t ma(r) ma(t)
?