La palabra BANANA
aparece 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 BANANA
mirando 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.BANNANA
oBANAANA
, donde se agregó una carta adicional.BANAN
,,BNANA
donde se eliminó una carta, pero noANANA
, ya que ya no hay unaB
.BAANNA
oBANAAN
, 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 BANAN
o al revés BNANA
dentro 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 BANAN
eso es parte de BANANA
, nor BANANAA
o 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 14
y ABRACADABRA 22
para su verificación.
fuente
MURMURS
parece como un caso de prueba bueno, ya me imagino una respuesta óptima implicaría dejar caer elS
Respuestas:
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