1
var solveSudoku = function (board) {2
let intBoard = convertBoardToInteger(board);10
if (isFreeIndex(board, x, y)) {12
while (!isPossibleValue(intBoard, x, y) && intBoard[y][x] < 10) {16
if (intBoard[y][x] > 9) {18
let a = retraceBoard(board, x, y);19
(x = a[0]), (y = a[1]);28
convertIntBoardToString(intBoard, board);31
var isFreeIndex = function (board, x, y) {32
return board[y][x] == ".";35
var isPossibleValue = function (intBoard, x, y) {37
isUniqueInColumn(intBoard, x, y) &&38
isUniqueOnRow(intBoard, x, y) &&39
isUniqueInBox(intBoard, x, y)42
var isUniqueOnRow = function (intBoard, x, y) {43
for (let i = 0; i < 9; i++) {44
if (intBoard[i][x] == intBoard[y][x] && i != y) {50
var isUniqueInColumn = function (intBoard, x, y) {51
for (let i = 0; i < 9; i++) {52
if (intBoard[y][i] == intBoard[y][x] && i != x) {58
var isUniqueInBox = function (intBoard, x, y) {59
let startX = x - (x % 3);60
let startY = y - (y % 3);62
for (let i = startX; i < startX + 3; i++) {63
for (let j = startY; j < startY + 3; j++) {64
if (intBoard[j][i] == intBoard[y][x] && (i != x || j != y)) {72
var retraceBoard = function (board, x, y) {80
} while (board[y][x] != ".");84
var convertBoardToInteger = function (board) {85
let intBoard = new Array(8);86
for (let y = 0; y < 9; y++) {87
intBoard[y] = new Array(8);88
for (let x = 0; x < 9; x++) {89
intBoard[y][x] = parseInt(board[y][x]);90
if (!intBoard[y][x]) intBoard[y][x] = 0;95
var convertIntBoardToString = function (intBoard, board) {96
for (let y = 0; y < 9; y++) {97
for (let x = 0; x < 9; x++) {98
board[y][x] = intBoard[y][x].toString();