Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eightQueensPuzzle;
- public class EightQueensPuzzle {
- private boolean isTrue = true;
- public boolean result() {
- return isTrue;
- }
- public EightQueensPuzzle(int board[][]) {
- for(int row = 0; row < board.length; row++) {
- if(!isTrue) { // don't continue, if it's known invalid
- break;
- }
- for(int col = 0; col < board.length; col++) {
- if(board[row][col] == 1) {
- if(!checkValidity(board, row, col)) {
- isTrue = false;
- break; // don't continue, if it's known invalid
- }
- }
- }
- }
- }
- private boolean checkValidity(int board[][], int row, int col) {
- // horizontal left
- for(int colTemp = col-1; colTemp >= 0; colTemp--) {
- if(board[row][colTemp] == 1) {
- return false;
- }
- }
- // horizontal right
- for(int colTemp = col+1; colTemp < board.length; colTemp++) {
- if(board[row][colTemp] == 1) {
- return false;
- }
- }
- // vertical top
- for(int rowTemp = row-1; rowTemp >= 0; rowTemp--) {
- if(board[rowTemp][col] == 1) {
- return false;
- }
- }
- // vertical bottom
- for(int rowTemp = row+1; rowTemp < board.length; rowTemp++) {
- if(board[rowTemp][col] == 1) {
- return false;
- }
- }
- // diagonal left top
- for(int rowTemp = row-1, colTemp = col-1;
- rowTemp >= 0 && colTemp >= 0;
- rowTemp--, colTemp--) {
- if(board[rowTemp][colTemp] == 1) {
- return false;
- }
- }
- // diagonal right top
- for(int rowTemp = row-1, colTemp = col+1;
- rowTemp >= 0 && colTemp < board.length;
- rowTemp--, colTemp++) {
- if(board[rowTemp][colTemp] == 1) {
- return false;
- }
- }
- // diagonal left bottom
- for(int rowTemp = row+1, colTemp = col-1;
- rowTemp < board.length && colTemp >= 0;
- rowTemp++, colTemp--) {
- if(board[rowTemp][colTemp] == 1) {
- return false;
- }
- }
- // diagonal right bottom
- for(int rowTemp = row+1, colTemp = col+1;
- rowTemp < board.length && colTemp < board.length;
- rowTemp++, colTemp++) {
- if(board[rowTemp][colTemp] == 1) {
- return false;
- }
- }
- return true;
- }
- public static void main(String[] args) {
- int b1[][] = {{0,0,1,0,0,0,0,0},
- {0,0,0,0,1,0,0,0},
- {0,1,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,1},
- {1,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,1,0},
- {0,0,0,1,0,0,0,0},
- {0,0,0,0,0,1,0,0}
- };
- int b2[][] = {{0,1,0,0},
- {0,0,0,1},
- {1,0,0,0},
- {0,1,0,0}
- };
- int b3[][] = {{0,1,0,0},
- {0,0,0,1},
- {1,0,0,0},
- {0,0,1,0}
- };
- System.out.println(new EightQueensPuzzle(b1).result()); // should be true
- System.out.println(new EightQueensPuzzle(b2).result()); // should be false
- System.out.println(new EightQueensPuzzle(b3).result()); // should be true
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement