Olá, Khabrovtsy. Neste artigo, quero compartilhar um pouco da minha experiência e mostrar meu algoritmo simples que criei para criar o Filward.
Por Filward, vou me referir a este jogo familiar.

O jogo possui um campo de tamanho NxN geralmente preenchido com palavras. Nosso objetivo é encontrar todas as palavras.
Em nossa versão, não haverá letras no campo que não pertençam a nenhuma palavra e sirvam para derrubar o jogador, e não haverá letras que pertençam a várias palavras ao mesmo tempo. A palavra-chave clássica usual. E assim, a tarefa está definida. Precisa decidir.
A primeira coisa que sempre divido a tarefa em subtarefas. Para resolver esse problema, precisarei de:
- DB com palavras.
- Um algoritmo que insere palavras em um campo.
- Um algoritmo que verifica a exatidão de uma palavra selecionada pelo usuário. Por exemplo, colocamos a palavra “programação” no campo e o usuário viu “mundo” lá e selecionou essa palavra. O usuário está certo - existe essa palavra, mas não a adivinhamos. Precisamos de um algoritmo que verifique as suposições do usuário e informe se ele está certo ou não.
, . .
1) .
, . words_2 . words_3 . :
words_2
-
-
-
-
words_3
-
-
-
-
words_4
-
-
words_5
-
-
.. ( , ).
5x5.
. 5x5, , = 25. 2 :
- - N- - , = 25.
- - , = 25.
1
- N, . N = 6. - .
25/6 = 4. words_4 .
N 1, .
25 – 4 = 21
6-1 = 5;
N!=1;
++giveWord() – , , .
wordsArray.Push() – , .
N=6;
freePlace =25;
While(N!=1)
{
wordsArray.Push( giveWord( freePlace/N ) );
freePlace-= freePlace/N;
N--;
}
wordsArray, 5 (4,4,4,4,4).
, = freePlace.
wordsArray.Push( giveWord( freePlace ) );
(4,4,4,4,4,5). =25. .
, . .
.
0 1 ( 0 1) 0 1 freePlace / N. .
2
- , . – 25. , . - - . - , , - . , 25 , 2 , 12 13 . . 25 – 5x5, 9 – 3x3, ? , - 1- . - .
Assim. 1/3 da parte que completamos. Temos um banco de dados e um algoritmo para formar uma matriz de palavras com as quais preencheremos nosso campo e a primeira parte termina aqui. Próximo Em algumas partes, empurraremos essas palavras no campo para que elas se encaixem.