From 074176fb9eca04859f11c8db279c034010e0607e Mon Sep 17 00:00:00 2001 From: Shadab Ali Date: Mon, 5 Oct 2020 22:13:54 +0530 Subject: [PATCH 1/6] Added: Sodoko Solver In DP --- Dynamic-Programming/SodokoSolver.js | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Dynamic-Programming/SodokoSolver.js diff --git a/Dynamic-Programming/SodokoSolver.js b/Dynamic-Programming/SodokoSolver.js new file mode 100644 index 0000000000..6216ab312e --- /dev/null +++ b/Dynamic-Programming/SodokoSolver.js @@ -0,0 +1,46 @@ +const _board = [ + ['.', '9', '.', '.', '4', '2', '1', '3', '6'], + ['.', '.', '.', '9', '6', '.', '4', '8', '5'], + ['.', '.', '.', '5', '8', '1', '.', '.', '.'], + ['.', '.', '4', '.', '.', '.', '.', '.', '.'], + ['5', '1', '7', '2', '.', '.', '9', '.', '.'], + ['6', '.', '2', '.', '.', '.', '3', '7', '.'], + ['1', '.', '.', '8', '.', '4', '.', '2', '.'], + ['7', '.', '6', '.', '.', '.', '8', '1', '.'], + ['3', '.', '.', '.', '9', '.', '.', '.', '.'], +]; +sodokoSolver(_board); +console.log(_board); + +function isValid(board, row, col, k) { + for (let i = 0; i < 9; i++) { + const m = 3 * Math.floor(row / 3) + Math.floor(i / 3); + const n = 3 * Math.floor(col / 3) + i % 3; + if (board[row][i] == k || board[i][col] == k || board[m][n] == k) { + return false; + } + } + return true; +} + + +function sodokoSolver(data) { + for (let i = 0; i < 9; i++) { + for (let j = 0; j < 9; j++) { + if (data[i][j] == '.') { + for (let k = 1; k <= 9; k++) { + if (isValid(data, i, j, k)) { + data[i][j] = `${k}`; + if (sodokoSolver(data)) { + return true; + } else { + data[i][j] = '.'; + } + } + } + return false; + } + } + } + return true; +} From bfeb55bdcd7870666771ad77e95c293fe841fd61 Mon Sep 17 00:00:00 2001 From: Shadab Ali Date: Tue, 6 Oct 2020 09:41:40 +0530 Subject: [PATCH 2/6] added: space remove --- Dynamic-Programming/SodokoSolver.js | 43 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/Dynamic-Programming/SodokoSolver.js b/Dynamic-Programming/SodokoSolver.js index 6216ab312e..29be3cab09 100644 --- a/Dynamic-Programming/SodokoSolver.js +++ b/Dynamic-Programming/SodokoSolver.js @@ -11,36 +11,33 @@ const _board = [ ]; sodokoSolver(_board); console.log(_board); - function isValid(board, row, col, k) { for (let i = 0; i < 9; i++) { const m = 3 * Math.floor(row / 3) + Math.floor(i / 3); const n = 3 * Math.floor(col / 3) + i % 3; if (board[row][i] == k || board[i][col] == k || board[m][n] == k) { - return false; + return false; } } return true; } - - function sodokoSolver(data) { - for (let i = 0; i < 9; i++) { - for (let j = 0; j < 9; j++) { - if (data[i][j] == '.') { - for (let k = 1; k <= 9; k++) { - if (isValid(data, i, j, k)) { - data[i][j] = `${k}`; - if (sodokoSolver(data)) { - return true; - } else { - data[i][j] = '.'; - } - } - } - return false; - } - } - } - return true; -} + for (let i = 0; i < 9; i++) { + for (let j = 0; j < 9; j++) { + if (data[i][j] == '.') { + for (let k = 1; k <= 9; k++) { + if (isValid(data, i, j, k)) { + data[i][j] = `${k}`; + if (sodokoSolver(data)) { + return true; + } else { + data[i][j] = '.'; + } + } + } + return false; + } + } + } + return true; +} \ No newline at end of file From 2968c3012946d41773954fb761e13855c7f67ba6 Mon Sep 17 00:00:00 2001 From: Shadab Ali Date: Tue, 6 Oct 2020 10:01:50 +0530 Subject: [PATCH 3/6] Chnage code accoding to npm standards. --- Dynamic-Programming/SodokoSolver.js | 79 +++++++++++++++-------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/Dynamic-Programming/SodokoSolver.js b/Dynamic-Programming/SodokoSolver.js index 29be3cab09..c21a9be55c 100644 --- a/Dynamic-Programming/SodokoSolver.js +++ b/Dynamic-Programming/SodokoSolver.js @@ -1,43 +1,44 @@ const _board = [ - ['.', '9', '.', '.', '4', '2', '1', '3', '6'], - ['.', '.', '.', '9', '6', '.', '4', '8', '5'], - ['.', '.', '.', '5', '8', '1', '.', '.', '.'], - ['.', '.', '4', '.', '.', '.', '.', '.', '.'], - ['5', '1', '7', '2', '.', '.', '9', '.', '.'], - ['6', '.', '2', '.', '.', '.', '3', '7', '.'], - ['1', '.', '.', '8', '.', '4', '.', '2', '.'], - ['7', '.', '6', '.', '.', '.', '8', '1', '.'], - ['3', '.', '.', '.', '9', '.', '.', '.', '.'], -]; -sodokoSolver(_board); -console.log(_board); -function isValid(board, row, col, k) { - for (let i = 0; i < 9; i++) { - const m = 3 * Math.floor(row / 3) + Math.floor(i / 3); - const n = 3 * Math.floor(col / 3) + i % 3; - if (board[row][i] == k || board[i][col] == k || board[m][n] == k) { - return false; - } - } - return true; +['.', '9', '.', '.', '4', '2', '1', '3', '6'], +['.', '.', '.', '9', '6', '.', '4', '8', '5'], +['.', '.', '.', '5', '8', '1', '.', '.', '.'], +['.', '.', '4', '.', '.', '.', '.', '.', '.'], +['5', '1', '7', '2', '.', '.', '9', '.', '.'], +['6', '.', '2', '.', '.', '.', '3', '7', '.'], +['1', '.', '.', '8', '.', '4', '.', '2', '.'], +['7', '.', '6', '.', '.', '.', '8', '1', '.'], +['3', '.', '.', '.', '9', '.', '.', '.', '.'], +] +sodokoSolver(_board) +console.log(_board) + +function isValid( board, row, col, k){ +for(let i = 0; i < 9; i++){ +const m = 3 * Math.floor(row / 3) + Math.floor(i / 3) +const n = 3 * Math.floor(col / 3) + i % 3; +if(board[row][i] === k || board[i][col] === k || board[m][n] === k) { +return false +} +} +return true } function sodokoSolver(data) { - for (let i = 0; i < 9; i++) { - for (let j = 0; j < 9; j++) { - if (data[i][j] == '.') { - for (let k = 1; k <= 9; k++) { - if (isValid(data, i, j, k)) { - data[i][j] = `${k}`; - if (sodokoSolver(data)) { - return true; - } else { - data[i][j] = '.'; - } - } - } - return false; - } - } - } - return true; +for(let i = 0; i < 9; i++){ +for (let j = 0; j < 9; j++){ +if(data[i][j] == '.'){ +for(let k = 1; k <= 9; k++){ +if(isValid( data, i, j, k)) { +data[i][j] = `${k}` +if(sodokoSolver(data)){ +return true +}else{ +data[i][j] = '.' +} +} +} +return false; +} +} +} +return true; } \ No newline at end of file From 33538aef3eee1ca56c850942727a71e3ccb000bb Mon Sep 17 00:00:00 2001 From: Shadab Ali Date: Tue, 6 Oct 2020 10:09:03 +0530 Subject: [PATCH 4/6] Change --- Dynamic-Programming/SodokoSolver.js | 73 +++++++++++++++-------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/Dynamic-Programming/SodokoSolver.js b/Dynamic-Programming/SodokoSolver.js index c21a9be55c..bdb3dfff50 100644 --- a/Dynamic-Programming/SodokoSolver.js +++ b/Dynamic-Programming/SodokoSolver.js @@ -1,44 +1,45 @@ const _board = [ -['.', '9', '.', '.', '4', '2', '1', '3', '6'], -['.', '.', '.', '9', '6', '.', '4', '8', '5'], -['.', '.', '.', '5', '8', '1', '.', '.', '.'], -['.', '.', '4', '.', '.', '.', '.', '.', '.'], -['5', '1', '7', '2', '.', '.', '9', '.', '.'], -['6', '.', '2', '.', '.', '.', '3', '7', '.'], -['1', '.', '.', '8', '.', '4', '.', '2', '.'], -['7', '.', '6', '.', '.', '.', '8', '1', '.'], -['3', '.', '.', '.', '9', '.', '.', '.', '.'], + ['.', '9', '.', '.', '4', '2', '1', '3', '6'], + ['.', '.', '.', '9', '6', '.', '4', '8', '5'], + ['.', '.', '.', '5', '8', '1', '.', '.', '.'], + ['.', '.', '4', '.', '.', '.', '.', '.', '.'], + ['5', '1', '7', '2', '.', '.', '9', '.', '.'], + ['6', '.', '2', '.', '.', '.', '3', '7', '.'], + ['1', '.', '.', '8', '.', '4', '.', '2', '.'], + ['7', '.', '6', '.', '.', '.', '8', '1', '.'], + ['3', '.', '.', '.', '9', '.', '.', '.', '.'], ] sodokoSolver(_board) console.log(_board) -function isValid( board, row, col, k){ -for(let i = 0; i < 9; i++){ -const m = 3 * Math.floor(row / 3) + Math.floor(i / 3) -const n = 3 * Math.floor(col / 3) + i % 3; -if(board[row][i] === k || board[i][col] === k || board[m][n] === k) { -return false -} -} -return true +function isValid(board, row, col, k) { + for (let i = 0; i < 9; i++) { + const m = 3 * Math.floor(row / 3) + Math.floor(i / 3) + const n = 3 * Math.floor(col / 3) + i % 3; + if (board[row][i] === k || board[i][col] === k || board[m][n] === k) { + return false + } + } + return true } + function sodokoSolver(data) { -for(let i = 0; i < 9; i++){ -for (let j = 0; j < 9; j++){ -if(data[i][j] == '.'){ -for(let k = 1; k <= 9; k++){ -if(isValid( data, i, j, k)) { -data[i][j] = `${k}` -if(sodokoSolver(data)){ -return true -}else{ -data[i][j] = '.' -} -} -} -return false; -} -} -} -return true; + for (let i = 0; i < 9; i++) { + for (let j = 0; j < 9; j++) { + if (data[i][j] == '.') { + for (let k = 1; k <= 9; k++) { + if (isValid(data, i, j, k)) { + data[i][j] = `${k}` + if (sodokoSolver(data)) { + return true + } else { + data[i][j] = '.' + } + } + } + return false; + } + } + } + return true; } \ No newline at end of file From 8d29bb11bb693931ac7cf835efc7641f3d6bc358 Mon Sep 17 00:00:00 2001 From: Shadab Ali Date: Tue, 6 Oct 2020 13:52:48 +0530 Subject: [PATCH 5/6] Update: All Issue Fix --- Dynamic-Programming/SodokoSolver.js | 45 ----------------------------- Dynamic-Programming/SudokuSolver.js | 44 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 45 deletions(-) delete mode 100644 Dynamic-Programming/SodokoSolver.js create mode 100644 Dynamic-Programming/SudokuSolver.js diff --git a/Dynamic-Programming/SodokoSolver.js b/Dynamic-Programming/SodokoSolver.js deleted file mode 100644 index bdb3dfff50..0000000000 --- a/Dynamic-Programming/SodokoSolver.js +++ /dev/null @@ -1,45 +0,0 @@ -const _board = [ - ['.', '9', '.', '.', '4', '2', '1', '3', '6'], - ['.', '.', '.', '9', '6', '.', '4', '8', '5'], - ['.', '.', '.', '5', '8', '1', '.', '.', '.'], - ['.', '.', '4', '.', '.', '.', '.', '.', '.'], - ['5', '1', '7', '2', '.', '.', '9', '.', '.'], - ['6', '.', '2', '.', '.', '.', '3', '7', '.'], - ['1', '.', '.', '8', '.', '4', '.', '2', '.'], - ['7', '.', '6', '.', '.', '.', '8', '1', '.'], - ['3', '.', '.', '.', '9', '.', '.', '.', '.'], -] -sodokoSolver(_board) -console.log(_board) - -function isValid(board, row, col, k) { - for (let i = 0; i < 9; i++) { - const m = 3 * Math.floor(row / 3) + Math.floor(i / 3) - const n = 3 * Math.floor(col / 3) + i % 3; - if (board[row][i] === k || board[i][col] === k || board[m][n] === k) { - return false - } - } - return true -} - -function sodokoSolver(data) { - for (let i = 0; i < 9; i++) { - for (let j = 0; j < 9; j++) { - if (data[i][j] == '.') { - for (let k = 1; k <= 9; k++) { - if (isValid(data, i, j, k)) { - data[i][j] = `${k}` - if (sodokoSolver(data)) { - return true - } else { - data[i][j] = '.' - } - } - } - return false; - } - } - } - return true; -} \ No newline at end of file diff --git a/Dynamic-Programming/SudokuSolver.js b/Dynamic-Programming/SudokuSolver.js new file mode 100644 index 0000000000..564a384923 --- /dev/null +++ b/Dynamic-Programming/SudokuSolver.js @@ -0,0 +1,44 @@ +const _board = [ + ['.', '9', '.', '.', '4', '2', '1', '3', '6'], + ['.', '.', '.', '9', '6', '.', '4', '8', '5'], + ['.', '.', '.', '5', '8', '1', '.', '.', '.'], + ['.', '.', '4', '.', '.', '.', '.', '.', '.'], + ['5', '1', '7', '2', '.', '.', '9', '.', '.'], + ['6', '.', '2', '.', '.', '.', '3', '7', '.'], + ['1', '.', '.', '8', '.', '4', '.', '2', '.'], + ['7', '.', '6', '.', '.', '.', '8', '1', '.'], + ['3', '.', '.', '.', '9', '.', '.', '.', '.'] +] +sodokoSolver(_board) + +function isValid (board, row, col, k) { + for (let i = 0; i < 9; i++) { + const m = 3 * Math.floor(row / 3) + Math.floor(i / 3) + const n = 3 * Math.floor(col / 3) + i % 3 + if (board[row][i] === k || board[i][col] === k || board[m][n] === k) { + return false + } + } + return true +} + +function sodokoSolver (data) { + for (let i = 0; i < 9; i++) { + for (let j = 0; j < 9; j++) { + if (data[i][j] === '.') { + for (let k = 1; k <= 9; k++) { + if (isValid(data, i, j, k)) { + data[i][j] = `${k}` + if (sodokoSolver(data)) { + return true + } else { + data[i][j] = '.' + } + } + } + return false + } + } + } + return true +} From ea7f2ce38c507d2dbb5599c363fd24cdad5080fc Mon Sep 17 00:00:00 2001 From: vinayak Date: Mon, 12 Oct 2020 13:33:42 +0530 Subject: [PATCH 6/6] Update SudokuSolver.js --- Dynamic-Programming/SudokuSolver.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Dynamic-Programming/SudokuSolver.js b/Dynamic-Programming/SudokuSolver.js index 564a384923..bbba70e7bb 100644 --- a/Dynamic-Programming/SudokuSolver.js +++ b/Dynamic-Programming/SudokuSolver.js @@ -9,9 +9,8 @@ const _board = [ ['7', '.', '6', '.', '.', '.', '8', '1', '.'], ['3', '.', '.', '.', '9', '.', '.', '.', '.'] ] -sodokoSolver(_board) -function isValid (board, row, col, k) { +const isValid = (board, row, col, k) => { for (let i = 0; i < 9; i++) { const m = 3 * Math.floor(row / 3) + Math.floor(i / 3) const n = 3 * Math.floor(col / 3) + i % 3 @@ -22,7 +21,7 @@ function isValid (board, row, col, k) { return true } -function sodokoSolver (data) { +const sodokoSolver = (data) => { for (let i = 0; i < 9; i++) { for (let j = 0; j < 9; j++) { if (data[i][j] === '.') { @@ -42,3 +41,10 @@ function sodokoSolver (data) { } return true } + +// testing +(() => { + if (sodokoSolver(_board)) { + console.log(_board) + } +})()