Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const INVALID_SUDOKU_GRID = [
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [1, 2, 3, 4, 5, 6, 7, 8, 9]
- ];
- const VALID_SUDOKU_GRID = [
- [5, 4, 6, 8, 9, 3, 2, 1, 7],
- [3, 9, 2, 1, 7, 4, 6, 8, 5],
- [8, 1, 7, 5, 2, 6, 9, 3, 4],
- [7, 6, 9, 3, 4, 1, 8, 5, 2],
- [2, 3, 4, 7, 8, 5, 1, 9, 6],
- [1, 8, 5, 2, 6, 9, 7, 4, 3],
- [4, 5, 8, 6, 1, 2, 3, 7, 9],
- [9, 2, 1, 4, 3, 7, 5, 6, 8],
- [6, 7, 3, 9, 5, 8, 4, 2, 1]
- ];
- // main driver function
- const main = sudokuGrid => {
- // rows_grid --> rows as rows
- // columns_grid --> columns as rows
- // blocks_grid --> 3 x 3 blocks as rows
- let rows_grid = [...sudokuGrid];
- let columns_grid = [];
- for (let i = 0; i < 9; i++) {
- columns_grid[i] = [];
- for (let j = 0; j < 9; j++) {
- columns_grid[i][j] = sudokuGrid[j][i];
- }
- }
- let blocks_grid = [];
- for (let i = 0; i < 3; i++) {
- for (let j = 0; j < 3; j++) {
- blocks_grid[3 * i + j] = [];
- for (let k = 0; k < 3; k++) {
- for (let l = 0; l < 3; l++) {
- // console.log(3 * i + k, 3 * j + l);
- // console.log(3 * i + j, 3 * k + l);
- blocks_grid[3 * i + j][3 * k + l] = sudokuGrid[3 * i + k][3 * j + l];
- }
- }
- }
- }
- rows_grid = sortSudokuGridRows(rows_grid);
- rows_grid_flag = checkSudokuGridRows(rows_grid);
- if (rows_grid_flag) {
- columns_grid = sortSudokuGridRows(columns_grid);
- columns_grid_flag = checkSudokuGridRows(columns_grid);
- if (columns_grid_flag) {
- blocks_grid = sortSudokuGridRows(blocks_grid);
- blocks_grid_flag = checkSudokuGridRows(blocks_grid);
- if (blocks_grid_flag) {
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- // console.log(rows_grid);
- // console.log(columns_grid);
- // console.log(blocks_grid);
- };
- // sorts every row
- const sortSudokuGridRows = sudokuGrid => {
- for (let i = 0; i < 9; i++) {
- sudokuGrid[i] = sudokuGrid[i].sort();
- }
- return sudokuGrid;
- };
- // checks if every row has numbers from 1 to 9
- const checkSudokuGridRows = sudokuGrid => {
- for (let i = 0; i < 9; i++) {
- for (let j = 0; j < 9; j++) {
- if (sudokuGrid[i][j] !== j + 1) {
- return false;
- }
- }
- }
- return true;
- };
- /*
- ** Rows Grid
- [ [ 5, 4, 6, 8, 9, 3, 2, 1, 7 ],
- [ 3, 9, 2, 1, 7, 4, 6, 8, 5 ],
- [ 8, 1, 7, 5, 2, 6, 9, 3, 4 ],
- [ 7, 6, 9, 3, 4, 1, 8, 5, 2 ],
- [ 2, 3, 4, 7, 8, 5, 1, 9, 6 ],
- [ 1, 8, 5, 2, 6, 9, 7, 4, 3 ],
- [ 4, 5, 8, 6, 1, 2, 3, 7, 9 ],
- [ 9, 2, 1, 4, 3, 7, 5, 6, 8 ],
- [ 6, 7, 3, 9, 5, 8, 4, 2, 1 ] ]
- ** Columns Grid
- [ [ 5, 3, 8, 7, 2, 1, 4, 9, 6 ],
- [ 4, 9, 1, 6, 3, 8, 5, 2, 7 ],
- [ 6, 2, 7, 9, 4, 5, 8, 1, 3 ],
- [ 8, 1, 5, 3, 7, 2, 6, 4, 9 ],
- [ 9, 7, 2, 4, 8, 6, 1, 3, 5 ],
- [ 3, 4, 6, 1, 5, 9, 2, 7, 8 ],
- [ 2, 6, 9, 8, 1, 7, 3, 5, 4 ],
- [ 1, 8, 3, 5, 9, 4, 7, 6, 2 ],
- [ 7, 5, 4, 2, 6, 3, 9, 8, 1 ] ]
- ** Blocks Grid
- [ [ 5, 4, 6, 3, 9, 2, 8, 1, 7 ],
- [ 8, 9, 3, 1, 7, 4, 5, 2, 6 ],
- [ 2, 1, 7, 6, 8, 5, 9, 3, 4 ],
- [ 7, 6, 9, 2, 3, 4, 1, 8, 5 ],
- [ 3, 4, 1, 7, 8, 5, 2, 6, 9 ],
- [ 8, 5, 2, 1, 9, 6, 7, 4, 3 ],
- [ 4, 5, 8, 9, 2, 1, 6, 7, 3 ],
- [ 6, 1, 2, 4, 3, 7, 9, 5, 8 ],
- [ 3, 7, 9, 5, 6, 8, 4, 2, 1 ] ]
- */
- // call the main function and print the output
- main(VALID_SUDOKU_GRID) ? console.log("Valid") : console.log("Invalid");
- // VALID
- main(INVALID_SUDOKU_GRID) ? console.log("Valid") : console.log("Invalid");
- // INVALID
Add Comment
Please, Sign In to add comment