Dado un archivo de diccionario (un archivo de texto que contiene una palabra o frase en cada línea, con posible puntuación pero sin números; las líneas están ordenadas alfabéticamente), debe generar cada combinación de palabras donde una letra puede eliminarse de una palabra para formar otra; la letra eliminada debe estar entre paréntesis.
Por ejemplo, la entrada
cat
cart
code
golf
ode
verify
versify
debería dar una salida de
ca(r)t
(c)ode
ver(s)ify
Múltiples formas de obtener el mismo par solo deben mostrarse una vez. Puede generar scra(p)pedo scrap(p)ed, pero no ambos.
La salida debe ordenarse alfabéticamente por la entrada más larga;
mart
mar
mat
ma
debe tener una salida de
ma(r)
ma(t)
ma(r)t
mar(t)
y los dos últimos podrían estar en cualquier orden.
El archivo del diccionario puede incluir mayúsculas, espacios, guiones o apóstrofes; Estos deben ser ignorados. Por ejemplo,
inlay
in-play
debe producir in(p)lay. Su salida debería estar en el mismo caso. Se permite espacio en blanco adicional.
La entrada puede ser STDIN o de un archivo; Está separado por nuevas líneas. La salida puede ser el valor de retorno de una función o STDOUT (o escrito en un archivo si lo desea).
Este es el código de golf , por lo que gana el código más corto en bytes.
(Este es mi primer desafío en PPCG; avíseme si he hecho algo mal y lo solucionaré).
mart mar mat ma? ¿Lo seríamar(t) ma(r)t ma(r) ma(t)?