Menu
CoddyTech

Sudoku Solver

לוח סודוקו הוא רשת בגודל 9 × 9 המחולקת לתשע תיבות בגודל 3 × 3. בלוח פתור, בכל שורה, בכל עמודה ובכל תיבה מופיעות כל הספרות מ־1 עד 9 פעם אחת בדיוק.

החידה ניתנת כמחרוזות 9, אחת לכל שורה מלמעלה למטה; . הוא תא ריק. מלאו את כל התאים הריקים והחזירו את הלוח הפתור באותה צורה. ללוח יש פתרון אחד בלבד.

פונקציה

solveSudoku(board: string-array) → string-array
boardstring-array
9 השורות של הפאזל, נקודה בכל תא ריק
מחזירהstring-array
9 השורות של הלוח הפתור

אילוצים

  • 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"]