La palabra BANANAaparece exactamente una vez en esta búsqueda de palabras :
B A N A A N B B
A B A N A B A N
A N A B N N A A
N N B A A A N N
N A A N N N B A
A N N N B A N A
N A A B A N A N
B A N A N B B A
La palabra de búsqueda anteriormente contiene sólo una ocurrencia de la palabra BANANAmirando hacia arriba, abajo, izquierda, derecha o en diagonal, pero tiene muchas palabras similares, como BANANB, BANNANA, BNANA, etc.
Su trabajo es crear un programa que genere búsquedas de palabras exasperantes como esta.
Su programa tomará como entrada:
Una palabra, en mayúsculas, que contiene de tres a siete letras únicas con al menos cuatro letras en total.
Un número, para representar la dimensión de la cuadrícula cuadrada para la búsqueda de palabras. El número debe ser al menos el número de letras en la palabra.
Y luego, genera una búsqueda de palabras usando solo las letras de la palabra, que contiene exactamente una aparición de la palabra de entrada, y la mayor cantidad posible de indignación .
Un enfurecedor se define como una cadena que tiene una distancia Damerau-Levenshtein de la palabra objetivo y comienza con la misma letra que la palabra. Para BANANA, esto incluiría palabras como:
BANBNA, donde se sustituyó una de las letras.BANNANAoBANAANA, donde se agregó una carta adicional.BANAN,,BNANAdonde se eliminó una carta, pero noANANA, ya que ya no hay unaB.BAANNAoBANAAN, donde se cambiaron dos letras consecutivas.
Al contar los enfurecedores en una cuadrícula de búsqueda de palabras, pueden superponerse, pero no puede contar una cadena grande si contiene completamente una cadena más pequeña que ya ha contado, o viceversa. (Si lo ha hecho BANANB, no puede volver a contarlo si ya ha contado el BANANo al revés BNANAdentro de él). Tampoco puede contar ninguna cadena que contenga completamente o esté completamente contenida por la palabra objetivo en sí (no puede contar la palabra específica BANANeso es parte de BANANA, nor BANANAAo BANANAN.)
Su programa se probará en una lista de palabras específica compuesta por las palabras que se ajustan al requisito de la palabra de entrada (que se dará más adelante una vez que la haya generado), en un tamaño de cuadrícula igual al doble de la longitud de la palabra, y se puntuará sobre el número de enfurecedores presentes en cada cuadrícula. Por favor, publicar sus resultados para las entradas BANANA 12, ELEMENT 14y ABRACADABRA 22para su verificación.
fuente

MURMURSparece como un caso de prueba bueno, ya me imagino una respuesta óptima implicaría dejar caer elSRespuestas:
Java Script
Bonificación: puede sembrar la búsqueda de Word. La semilla predeterminada es: "codechallenge"
BANANO - 12:
ELEMENTO - 14:
Buena suerte: ABRACADABRA - 22:
Extra: MISSISSIPPI - 32:
fuente
C ++
Escribí este hoy. No es la forma más eficiente y no siempre genera las búsquedas de palabras de aspecto más aleatorio, pero hace el trabajo y lo hace relativamente rápido.
Bonus: ¡¡También es compatible con Palindromes !!!
Funciona tomando la entrada de la palabra y el tamaño de la búsqueda de palabras. Luego genera infuradores al soltar letras, insertar letras o voltear letras. Luego los agrega a la cuadrícula, así como la palabra correcta. Luego verifica todas las instancias de la primera letra en cada dirección para la palabra. Si no se encuentra 1 instancia (2 para palíndromos), la fuerza bruta termina el ciclo. Luego da salida a la búsqueda de palabras a la consola, así como a un archivo.
Aquí está en 213 líneas de código con espacios en blanco y comentarios.
Estoy lejos de ser un experto en C ++, así que estoy seguro de que hay lugares donde este código podría mejorarse, pero estaba contento con la forma en que terminó.
Aquí están las salidas.
Puedo actualizar esto para generar búsquedas de palabras de aspecto un poco más "al azar".
fuente
Excel VBA
Funciona colocando primero la palabra de forma aleatoria en la hoja de cálculo, aleatoriamente en posición y dirección, luego rellenando los espacios no vacíos en la cuadrícula circundante eligiendo aleatoriamente todas las letras excepto la última.
Salida BANANA (2, 1):
Salida ELEMENTO (6, 5):
Salida ABRACADABRA (2, 3):
fuente