js数独ソルバー
code: sudoku_solver.js
const board = "530070000600195000098000060800060003400803001700020006060000280000419005000080079".split('').map(_=>parseInt(_));
const groups = [
(i)=> i/9|0,
(i)=> i%9,
(i)=> (i/27|0)*3+(i%9/3)|0
];
const isUnique = (arr1) => arr1.every((e1,i,arr2)=> !arr2.some((e2,j) => j != i && e1 == e2));
const checkUnique = (n,g) => isUnique(board.filter((e,i) => g(i) == n && e > 0));
const checkCell = (i) => groups.every(g => checkUnique(g(i),g));
const solve = index => index < 81
return checkCell(index) && solve(index + 1);
}) ? 1 : boardindex = 0)) : 1;
solve(0);
console.log(board.join(''));
code: output.txt
% node solver.js
534678912672195348198342567859761423426853791713924856961537284287419635345286179
追記しました。