写一个数独的js代码
时间: 2023-02-26 18:58:10 浏览: 47
我可以给你一个参考:<script type="text/javascript">
// 数独表格
const sudoku = [
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
]
// 将填入的值放入数独表格
function fillSudoku(x, y, value) {
sudoku[x][y] = value
}
// 判断数独表格是否解出
function isSolved() {
// 判断每一行是否有效
for (let i = 0; i < 9; i++) {
const row = new Set()
for (let j = 0; j < 9; j++) {
const cell = sudoku[i][j]
if (cell === 0) return false
row.add(cell)
}
if (row.size !== 9) return false
}
// 判断每一列是否有效
for (let i = 0; i < 9; i++) {
const col = new Set()
for (let j = 0; j < 9; j++) {
const cell = sudoku[j][i]
if (cell === 0) return false
col.add(cell)
}
if (col.size !== 9) return false
}
// 判断每一个 3x3 小方块是否有效
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
const block = new Set()
for (let k = 0; k < 3; k++) {
for (let l = 0; l < 3; l++) {
const cell = sudoku[i * 3 + k][j * 3 + l]
if (cell === 0) return false
block.add(cell)
}
}
if (block.size !== 9) return false
}
}
return true
}
</script>