/** * File: NQueens.js * Author: Brian Borowski * Date created: November 15, 2002 * Date last modified: February 12, 2011 */ function NQueens() { // Private Member Variables var size = 8; // default to 8-Queens var numOfSolutions, currentSolution; var solutions = null; var time = 0; var imgQueen = new Image(); var a, b, c, x; // Public Method Pointers this.setBoardSize = setBoardSize; this.gotoBeginning = gotoBeginning; this.gotoEnd = gotoEnd; this.goBack = goBack; this.goForward = goForward; this.clear = clear; this.solve = solve; this.displayPosition = displayPosition; this.displayElapsedTime = displayElapsedTime; this.drawBoard = drawBoard; // Initialization imgQueen.src = "./Images/queen.gif"; // ********************** Public Methods *********************** // function setBoardSize(sz) { size = parseInt(sz); } function getNumOfSolutions() { return numOfSolutions; } function gotoBeginning() { currentSolution = 1; } function gotoEnd() { currentSolution = numOfSolutions; } function goBack() { if (currentSolution > 1) { currentSolution--; } } function goForward() { if (currentSolution < numOfSolutions) { currentSolution++; } } function clear() { solutions = null; } function solve() { time = new Date(); numOfSolutions = 0; gotoBeginning(); solutions = new Array(); a = new Array(); b = new Array(); c = new Array(); x = new Array(); for (var i = 1; i <= size; i++) { a[i] = true; x[i] = 0; } for (var i = 2; i <= 2*size; i++) { b[i] = true; } for (var i = 1-size; i <= size-1; i++) { c[i] = true; } tryConfig(1); time = (new Date() - time)/1000; } function displayPosition() { writeToLayer("position", getPosition()); } function displayElapsedTime() { writeToLayer("time", time + " s"); } function drawBoard() { var sTable; sTable = "
"; } else { sRow += " | ";
}
if (solutions != null &&
solutions[currentSolution][row] == col) {
sRow += " " +
" | ";
} else {
sRow += "";
}
}
sRow += "