Johnny está tratando de crear crucigramas, pero tiene dificultades para hacer que las palabras coincidan entre sí.
Se le han ocurrido varios rectángulos de palabras simples: es decir, grupos de palabras que forman un rectángulo donde todas las rutas horizontales y verticales forman una palabra.
//2x2
PA
AM
//2x3
GOB
ORE
//3x3
BAG
AGO
RED
//3x4
MACE
AGES
WEES
Sin embargo, para hacer un buen rompecabezas, necesita algunos rectángulos de palabras que sean algo más grandes que 3x4. En lugar de agonizar por las cartas de arreglo durante horas, Johnny preferiría tener un programa que haga esto por él, y en la menor cantidad de caracteres posible, porque los bloques largos de código son extremadamente intimidantes para programadores casuales como Johnny.
Dado
- un diccionario de archivos de texto donde las palabras están separadas por nuevas líneas en orden alfabético,
- entrada que especifica el número de filas y columnas en el rectángulo de palabras (que se puede proporcionar, sin embargo, es más conveniente en el lenguaje de programación que elija)
generar al menos una palabra rectángulo. Si no es posible generar un rectángulo de palabras con el léxico y las dimensiones dadas, el programa no necesita tener un comportamiento definido. No es necesario que el programa pueda generar rectángulos que contengan más de 64 letras o que tengan dimensiones superiores a 8 en cualquier dirección. El programa debería poder completarse en un tiempo razonable, digamos, en treinta minutos o menos.
EDITAR: Si está haciendo un rectángulo NxN, puede usar un archivo de diccionario más pequeño que solo contiene palabras que tienen una longitud de N letras.