Der einfachste Algorithmus zum Erstellen eines Feldpuzzles (Teil 1)

Hallo, Chabrowitsch. In diesem Artikel möchte ich Ihnen ein wenig meine Erfahrungen mitteilen und Ihnen meinen einfachen Algorithmus zeigen, den ich zum Erstellen des Filward entwickelt habe.


Mit Filward meine ich dieses vertraute Spiel.



Das Spiel hat ein Feld mit der Größe NxN, das normalerweise mit Wörtern gefüllt ist. Unser Ziel ist es, alle Wörter zu finden.
In unserer Version gibt es keine Buchstaben auf dem Feld, die zu keinem Wort gehören und dazu dienen, den Spieler niederzuschlagen, und es gibt keine Buchstaben, die zu mehreren Wörtern gleichzeitig gehören. Das übliche klassische Fileword. Und so ist die Aufgabe festgelegt. Müssen sich entscheiden.


Als erstes teile ich die Aufgabe immer in Unteraufgaben auf. Um dieses Problem zu lösen, brauche ich:


  1. DB mit Worten.
  2. Ein Algorithmus, der Wörter in ein Feld einfügt.
  3. Ein Algorithmus, der ein vom Benutzer ausgewähltes Wort auf Richtigkeit überprüft. Zum Beispiel haben wir das Wort "Programmierung" in das Feld eingefügt, und der Benutzer hat dort "Welt" gesehen und dieses Wort ausgewählt. Der Benutzer hat Recht - es gibt ein solches Wort, aber wir haben es nicht erraten. Wir brauchen einen Algorithmus, der die Vermutungen des Benutzers überprüft und ihm sagt, ob er Recht hat oder nicht.

, . .


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


Damit. 1/3 des Teils haben wir abgeschlossen. Wir haben eine Datenbank und einen Algorithmus zum Bilden einer Reihe von Wörtern, mit denen wir unser Feld füllen und der erste Teil endet hier. Nächster Teile werden wir diese Wörter in das Feld schieben, so dass sie alle passen.

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


All Articles