El algoritmo más simple para crear un rompecabezas de campo (Parte 1)

Hola Khabrovtsy En este artículo, quiero compartir con ustedes un poco de mi experiencia y mostrarles mi algoritmo simple que se me ocurrió para crear Filward.


Por Filward, me referiré a este juego familiar.



El juego tiene un campo generalmente de tamaño NxN lleno de palabras. Nuestro objetivo es encontrar todas las palabras.
En nuestra versión no habrá letras en el campo que no pertenezcan a ninguna palabra y sirvan para derribar al jugador, y no habrá letras que pertenezcan a varias palabras a la vez. La palabra de archivo clásica habitual. Y así, la tarea está establecida. Necesito decidir.


Lo primero que siempre divido la tarea en subtareas. Para resolver este problema necesitaré:


  1. DB con palabras.
  2. Un algoritmo que inserta palabras en un campo.
  3. Un algoritmo que verifica la corrección de una palabra seleccionada por el usuario. Por ejemplo, colocamos la palabra "programación" en el campo, y el usuario vio "mundo" allí y selecciona esta palabra. El usuario tiene razón: existe esa palabra, pero no la adivinamos. Necesitamos un algoritmo que verifique las conjeturas del usuario y le diga si tiene razón o no.

, . .


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


Entonces. 1/3 de la parte que hemos completado. Tenemos una base de datos y un algoritmo para formar una serie de palabras con las que llenaremos nuestro campo y la primera parte termina aquí. próximo partes empujaremos estas palabras en el campo para que encajen todas.

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


All Articles