MCPcopy Create free account
hub / github.com/careercup/CtCI-6th-Edition-JavaScript / nqueens

Function nqueens

chapter08/8.12 - Eight Queens/nQueens.js:42–66  ·  view source on GitHub ↗
(n)

Source from the content-addressed store, hash-verified

40};
41
42var nqueens = function(n) {
43 var board = [];
44 var checker = '';
45 var answers = [];
46
47 for (var i = 0; i < n; i++) {
48 board.push(-1);
49 checker += '0';
50 }
51
52 var recurse = function(currentBoard, center, leftDiag, rightDiag, currRow) {
53 if (currRow === n) {
54 answers.push(currentBoard);
55 }
56 for (var i = 0; i < n; i++) {
57 if (center.charAt(i) === '0' && leftDiag.charAt(i) === '0' && rightDiag.charAt(i) === '0') {
58 currentBoard[i] = currRow;
59 recurse(currentBoard, changeChar(center, i, '1'), leftShift(changeChar(leftDiag, i, '1'), n), rightShift(changeChar(rightDiag, i, '1'), n), currRow + 1);
60 currentBoard[i] = -1; // untoggle board to save on space complexity for arrays per recursive step
61 }
62 }
63 };
64 recurse(board, checker, checker, checker, 0);
65 return answers;
66};
67
68/* TEST */
69// leftShift works as expected

Callers 1

nQueens.jsFile · 0.85

Calls 2

recurseFunction · 0.70
pushMethod · 0.45

Tested by

no test coverage detected