Un pangrama es una cadena que contiene todas las cartas a
- z
del alfabeto Inglés, entre mayúsculas y minúsculas. (Está bien si el pangrama contiene más de una copia de una letra, o si contiene caracteres que no son letras además de las letras).
Escriba un programa o función cuya entrada sea una lista de cadenas y que genere una o más cadenas que tengan las siguientes propiedades:
- Cada cadena de salida debe ser un pangrama.
- Cada cadena de salida debe formarse concatenando una o más cadenas de la lista de entrada, separadas por espacios.
- Cada cadena de salida debe ser la más corta, o estar vinculada por la más corta, entre todas las cadenas con estas propiedades.
Muchos programas elegirán generar solo una cadena; solo querría generar más de una cadena si de lo contrario tendría que escribir código adicional para limitar la salida.
Puede suponer que la entrada no contiene caracteres o espacios no imprimibles, y que ninguna palabra contiene más de (26 veces el logaritmo natural de la longitud de la lista) caracteres. (Sin embargo, no puede suponer que la entrada contiene nada más que letras, o solo letras minúsculas; los signos de puntuación y las letras mayúsculas son totalmente posibles).
La entrada y salida se pueden dar en cualquier formato razonable. Para probar su programa, le recomiendo usar dos casos de prueba: un diccionario de palabras en inglés (la mayoría de las computadoras tienen uno) y el siguiente caso (para el cual es imposible un pangrama perfecto (26 letras), por lo que tendría que encontrar uno que contiene letras duplicadas):
abcdefghi
defghijkl
ijklmnop
lmnopqrs
opqrstuvw
rstuvwxyz
Debe incluir una muestra de la salida de su programa junto con su envío. (Esto puede ser diferente para diferentes personas como resultado del uso de diferentes listas de palabras).
Condición de victoria
Este es un desafío de código restringido de golf complejo . El ganador es el programa más corto (en bytes) que se ejecuta en tiempo polinómico . (Un resumen para las personas que no saben lo que eso significa: si duplica el tamaño de la lista de palabras, el programa no debería ser más lento que un factor constante. Sin embargo, el factor constante en cuestión puede ser tan grande como usted). Por ejemplo, es válido para que sea cuatro veces más lento u ocho veces más lento, pero no para que se reduzca en un factor de la longitud de la lista de palabras; el factor a través del cual se vuelve más lento debe estar limitado).