GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — JavaScript/Backtracking/NQueens.js at master · TheAlgorithms/JavaScript Expand file tree/ Copy pathNQueens.jsMore file actions 67 lines (55 loc) · 1.43 KB / Copy pathNQueens.jsFile metadata and controls67 lines (55 loc) · 1.43 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 class NQueens { constructor(size) { if (size < 0) { throw RangeError('Invalid board size') } this.board = new Array(size).fill('.').map(() => new Array(size).fill('.')) this.size = size this.solutionCount = 0 } isValid([row, col]) { // function to check if the placement of the queen in the given location is valid // checking the left of the current row for (let i = 0; i < col; i++) { if (this.board[row][i] === 'Q') return false } // checking the upper left diagonal for (let i = row, j = col; i >= 0 && j >= 0; i--, j--) { if (this.board[i][j] === 'Q') return false } // checking the lower left diagonal for (let i = row, j = col; j >= 0 && i < this.size; i++, j--) { if (this.board[i][j] === 'Q') return false } return true } placeQueen(row, col) { this.board[row][col] = 'Q' } removeQueen(row, col) { this.board[row][col] = '.' } solve(col = 0) { if (col >= this.size) { this.solutionCount++ return true } for (let i = 0; i < this.size; i++) { if (this.isValid([i, col])) { this.placeQueen(i, col) this.solve(col + 1) this.removeQueen(i, col) } } return false } printBoard(output = (value) => console.log(value)) { if (!output._isMockFunction) { output('\n') } for (const row of this.board) { output(row) } } } export { NQueens } |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |