تمثل مشكلة N-Queens تحديًا كلاسيكيًا في كثير من الأحيان في مقابلات البرمجة والإعدادات الأكاديمية. يكمن التحدي في وضع N Queens على لوحة شطرنج N × N بحيث لا يهدد ملكتان لبعضهما البعض. هذا يعني أنه لا يمكن لأي ملكات مشاركة نفس الصف أو العمود أو قطري.
بالنظر إلى عدد صحيح n ، ارجع جميع الحلول المميزة إلى لغز N-Queens. يمكنك إعادة الإجابات بأي ترتيب.
يحتوي كل حل على تكوين لوح مميز لوضع N-Quins ، حيث يشير "Q" إلى ملكة و ".". يشير إلى مساحة فارغة.
بالنسبة إلى n = 4 ، الحلول الممكنة هي:
[
[".Q..", // Solution 1
"...Q",
"Q...",
"..Q."],
["..Q.", // Solution 2
"Q...",
"...Q",
".Q.."]
]
النهج الأكثر شيوعًا لحل مشكلة n-queens هو استخدام التراجع. تقوم خوارزمية التراجع ببناء المرشحين بشكل تدريجي إلى الحل وتتخلى عن المرشح بمجرد أن يحدد أن المرشح لا يمكن أن يؤدي إلى حل صالح.
خطوات:
Initialize the Board : ابدأ بلوحة N × N فارغة.Place the Queen : حاول وضع الملكة في الصف الأول وانتقل إلى وضع الملكات اللاحقة.Check Validity : لكل موضع ملكة ، تحقق مما إذا كان يتعارض مع الملكات الموضوعة بالفعل.Backtrack if Necessary : إذا كان وضع الملكة يؤدي إلى أي حل ، فإزالة الملكة (التراكت) وجرب الموضع التالي.Store the Solution : إذا تم العثور على تكوين صالح (N Queens الموضوعة) ، فقم بتخزين تكوين اللوحة.Repeat : تابع هذه العملية حتى تتم تجربة جميع التكوينات الممكنة.يمكن تمثيل اللوحة باستخدام قائمة ثنائية الأبعاد حيث تكون كل خلية إما "Q" أو ".".
من الأهمية بمكان التحقق من النزاعات: أمر بالغ الأهمية:
Row Check : التأكد من عدم وجود ملكات أخرى في نفس الصف.Column Check : ضمان عدم وجود ملكات أخرى في نفس العمود.Diagonal Check : ضمان عدم وجود ملكات أخرى على نفس القطر.يمكن أن يؤدي استخدام مجموعات لتتبع الأعمدة المحتلة والقطريات إلى تسريع عملية فحص الصراع.
لتحسين حل مشكلة N أكبر ، فإن الحل يعزز التزامن مع ThreadPoolexecutor:
جاء هذا الحل Frome أحد تحديات الجمعة المجانية لدينا ، حيث نختار تحديات المقابلة العشوائية خلال فترة توقفنا لكتابة حلول لها.
pip install wolfsoftware.NQueens
usage: nqueens [-h] [-v] [-V] [board_size]
See solutions to the NQueens problem.
positional arguments:
board_size Size of the board (default is 8 for the Eight Queens puzzle) (default: 8)
flags:
-h, --help Show this help message and exit
-v, --verbose Enable verbose output - show the actual boards (default: False)
-V, --version Show program's version number and exit.
The N Queens puzzle is the problem of placing N chess queens on an N×N chessboard so that no two queens threaten each other.
تمثل مشكلة N-Queens تحديًا رائعًا ومعقدًا يتطلب فهمًا عميقًا للتكرار ، والتراجع ، وتقنيات التحسين. من خلال الاستفادة من متعدد الخيوط ، يجد هذا التنفيذ بكفاءة جميع الحلول الممكنة لحجم لوحة معين. يعد فهم وتنفيذ مشكلة N-Queens تمرينًا قيمًا لتحسين مهارات حل المشكلات والتفكير الخوارزمي.