Estou criando um jogo semelhante ao Tetris, com duas diferenças principais: a tela já começa cheia de peças (como no Puzzle Quest para Nintendo DS e PC) e cada peça individual tem uma letra. O objetivo do jogador é eliminar peças, formando palavras válidas com elas. As palavras são formadas colocando letras próximas umas das outras, em qualquer direção, exceto na diagonal.
O jogador pode mover uma linha inteira de peças para a esquerda ou para a direita ou uma coluna inteira de peças para cima ou para baixo, pelo espaço que desejar (se o movimento de uma linha / coluna ultrapassar os limites do tabuleiro, o A letra que ultrapassa o limite "circula", aparecendo no outro extremo da linha / coluna). Após a ação do jogador, o jogo deve verificar o tabuleiro inteiro para procurar palavras válidas e remover as letras que formam essas palavras do tabuleiro. As letras acima daquelas que foram removidas cairão no lugar daquelas que foram removidas e novas cartas cairão da parte superior da tela até que o quadro seja preenchido novamente.
Eu já escrevi um algoritmo linear que, dada uma sequência de caracteres, determina se é uma palavra válida em inglês. O problema que estou enfrentando é: como posso verificar se há palavras válidas no quadro? A força bruta é a única maneira? Testar todas as combinações possíveis do quadro para ver se elas são válidas é muito lento, mesmo para um quadro pequeno (5x5). Qualquer ajuda será muito apreciada, obrigado!