L'algorithme le plus simple pour créer un puzzle de terrain (partie 1)

Salut, Khabrovtsy. Dans cet article, je veux partager avec vous un peu mon expérience et vous montrer mon algorithme simple que j'ai trouvé pour créer le Filward.


Par Filward, je veux dire ce jeu familier.



Le jeu possède un champ généralement de taille NxN rempli de mots. Notre objectif est de trouver tous les mots.
Dans notre version, il n'y aura pas de lettres dans le champ qui n'appartiennent à aucun mot et servent à renverser le joueur, et il n'y aura pas de lettres qui appartiennent à plusieurs mots à la fois. Le mot de fichier classique habituel. Et donc, la tâche est fixée. Besoin de décider.


La première chose que je divise toujours la tâche en sous-tâches. Pour résoudre ce problème, j'ai besoin de:


  1. DB avec des mots.
  2. Un algorithme qui insère des mots dans un champ.
  3. Un algorithme qui vérifie l'exactitude d'un mot sélectionné par l'utilisateur. Par exemple, nous avons mis le mot «programmation» dans le champ, et l'utilisateur y a vu «monde» et a sélectionné ce mot. L'utilisateur a raison - il existe un tel mot, mais nous ne l'avons pas deviné. Nous avons besoin d'un algorithme qui vérifiera les suppositions de l'utilisateur et lui dira s'il a raison ou non.

, . .


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- . - .


Donc. 1/3 de la partie que nous avons terminée. Nous avons une base de données et un algorithme pour former un tableau de mots avec lesquels nous remplirons notre champ et la première partie se termine ici. Prochain pièces, nous allons pousser ces mots sur le terrain afin qu'ils correspondent tous.

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


All Articles