Estoy creando un juego similar a Tetris, con dos diferencias principales: la pantalla ya comienza llena de mosaicos (como en Puzzle Quest para Nintendo DS y PC) y cada mosaico individual tiene una letra. El objetivo del jugador es eliminar fichas formando palabras válidas con ellas. Las palabras se forman colocando letras una al lado de la otra, en cualquier dirección, excepto en diagonal.
El jugador puede mover una fila completa de fichas hacia la izquierda o hacia la derecha o una columna completa de fichas hacia arriba o hacia abajo, durante todos los espacios que desee (si el movimiento de una fila / columna supera los límites del tablero, el la letra que cruza el límite "ciclo", que aparece en el otro extremo de la fila / columna). Después de la acción del jugador, el juego debe revisar todo el tablero para buscar palabras válidas y eliminar las letras que forman esas palabras del tablero. Las letras sobre las que se eliminaron se colocarán en el lugar de las letras que se eliminaron y nuevas letras caerán desde la parte superior de la pantalla hasta que el tablero se vuelva a llenar.
Ya he escrito un algoritmo lineal que, dada una secuencia de caracteres, determina si es una palabra inglesa válida. El problema que tengo es: ¿cómo puedo verificar si hay palabras válidas en la pizarra? ¿Es la fuerza bruta la única forma? Probar todas las combinaciones posibles del tablero para ver si son válidas es muy lento, incluso para un tablero pequeño (5x5). Cualquier ayuda será muy apreciada, gracias!