Skip to content

Instantly share code, notes, and snippets.

@delikat
Created October 3, 2013 03:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save delikat/6804672 to your computer and use it in GitHub Desktop.
Save delikat/6804672 to your computer and use it in GitHub Desktop.
bitwise n-queens solution
var bitwiseCountNQueensSolutions = function(n) {
var solutions = 0;
var allBits = Math.pow(2, n) - 1;
var bitwiseQueens = function(majorDiag, col, minorDiag) {
var poss = ~(majorDiag | col | minorDiag) & allBits;
while (poss) {
var queenSpot = -poss & poss;
poss = poss ^ queenSpot;
bitwiseQueens((majorDiag | queenSpot) >> 1, col | queenSpot, (minorDiag | queenSpot) << 1);
}
if (col === allBits) {
solutions++;
}
};
bitwiseQueens(0,0,0);
return solutions;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment