O algoritmo mais simples para criar um quebra-cabeça de campo (parte 1)

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:


  1. DB com palavras.
  2. Um algoritmo que insere palavras em um campo.
  3. 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 :


  1. - N- - , = 25.
  2. - , = 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.

Source: https://habr.com/ru/post/undefined/


All Articles