# ===== CodeLab: JavaScript 小游戏⑨:数独网页版 ===== # 来源: https://aoerliang.dpdns.org/articles/game-js-sudoku # 以下代码片段按文章出现顺序拼接, 共 3 段 # ----- 片段 1 (javascript) ----- function valid(b, r, c, n) { for (let i = 0; i < 9; i++) { if (b[r][i] === n || b[i][c] === n) return false; } const br = Math.floor(r / 3) * 3, bc = Math.floor(c / 3) * 3; for (let i = 0; i < 3; i++) for (let j = 0; j < 3; j++) if (b[br + i][bc + j] === n) return false; return true; } function solve(b) { for (let r = 0; r < 9; r++) { for (let c = 0; c < 9; c++) { if (b[r][c] === 0) { for (let n = 1; n <= 9; n++) { if (valid(b, r, c, n)) { b[r][c] = n; if (solve(b)) return true; b[r][c] = 0; } } return false; } } } return true; } # ----- 片段 2 (javascript) ----- function generate() { const b = Array.from({length: 9}, () => Array(9).fill(0)); solve(b); const cells = []; for (let r = 0; r < 9; r++) for (let c = 0; c < 9; c++) cells.push([r, c]); cells.sort(() => Math.random() - 0.5); for (let i = 0; i < 40; i++) { const [r, c] = cells[i]; b[r][c] = 0; } return b; } # ----- 片段 3 (html) ----- 数独

数独 点格子填 1-9,按钮看答案