Menu
CoddyTech

Sudoku Solver

لوحة سودوكو عبارة عن شبكة 9 × 9 مقسمة إلى تسعة مربعات 3 × 3. في اللوحة المحلولة، يحتوي كل صف وكل عمود وكل مربع على كل رقم من 1 إلى 9 مرة واحدة بالضبط.

يأتي اللغز على هيئة 9 سلاسل نصية، واحدة لكل صف بدءًا من الأعلى؛ وتمثل . خلية فارغة. املأ كل الخلايا الفارغة وأعِد اللوحة المحلولة بالشكل نفسه. للوحة حل واحد بالضبط.

الدالة

solveSudoku(board: string-array) → string-array
boardstring-array
الصفوف التسعة من اللغز، ونقطة في كل خلية فارغة
تُرجعstring-array
الصفوف التسعة للوحة المحلولة

القيود

  • board يحتوي على 9 سلاسل نصية، طول كل منها 9.
  • كل حرف هو . أو أحد الأرقام من 1 إلى 9.
  • لا تتكرر الأرقام المعطاة مطلقًا داخل صف أو عمود أو مربع.
  • للوحة حل واحد بالضبط.

أمثلة

المدخلات
board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]
المخرجات
["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]
الشرح
يحتوي الصف العلوي 9.7.....6 بالفعل على 9 و7 و6، لذا تحتوي خلاياه الست الفارغة على 1 و2 و3 و4 و5 و8. تحدد الأعمدة والمربعات موضع كل رقم، ويصبح الصف 957214386.
challenge icon

سؤال إضافي

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

إعادة ضبط الشيفرة
def solveSudoku(board):
    # اكتب الكود هنا

اختبار #1

وسيط

board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]

الإخراج المتوقع

["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]