أبسط خوارزمية لإنشاء أحجية المجال (الجزء الأول)

مرحبًا خابروفتسي. في هذه المقالة ، أود أن أشارككم قليلاً من خبرتي وأريكم خوارزمي البسيط الذي توصلت إليه لإنشاء Filward.


بواسطة Filward ، سأعني هذه اللعبة المألوفة.



تحتوي اللعبة على حقل بحجم NxN مليء بالكلمات. هدفنا هو العثور على جميع الكلمات.
في نسختنا ، لن تكون هناك أحرف في الحقل لا تنتمي إلى أي كلمة وتعمل على تدمير اللاعب ، ولن تكون هناك أحرف تنتمي إلى عدة كلمات في وقت واحد. كلمة الملف الكلاسيكية المعتادة. وهكذا ، تم تعيين المهمة. بحاجة إلى اتخاذ قرار.


أول شيء أقوم دائمًا بتقسيم المهمة إلى مهام فرعية. لحل هذه المشكلة ، سأحتاج إلى:


  1. DB بالكلمات.
  2. خوارزمية تُدرج الكلمات في حقل.
  3. خوارزمية تتحقق من صحة كلمة يختارها المستخدم. على سبيل المثال ، وضعنا كلمة "برمجة" في الحقل ، ورأى المستخدم "العالم" هناك وحدد هذه الكلمة. المستخدم على حق - هناك مثل هذه الكلمة ، لكننا لم نخمنها. نحتاج إلى خوارزمية تتحقق من تخمينات المستخدم وتخبره ما إذا كان على حق أم لا.

, . .


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


وبالتالي. 1/3 الجزء الذي أكملناه. لدينا قاعدة بيانات وخوارزمية لتشكيل مجموعة من الكلمات التي سنملأ بها مجالنا والجزء الأول من هذا ينتهي. التالى الأجزاء سنقوم بدفع هذه الكلمات في الحقل حتى تناسبها جميعًا.

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


All Articles