Revision: 67347
Updated Code
at September 14, 2014 13:02 by greymatters
Updated Code
package testknight;
import java.util.Scanner;
/**
*
* @author piguy
*/
public class TestKnight {
public static void main(String[] args) {
// Create array called "shape"
// Must be rectangular integer array (each row must be same length) to pass to KnightsTourOrig
// 1 denotes square onto which knight can be moved
// 0 denotes square onto which knight cannot be moved
int[][] shape = new int[][]{
{ 0, 0, 0, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 0 }
};
// Take shape and turn it into custom KnightsTour object called board
KnightsTour board = new KnightsTour(shape);
System.out.println();
board.displayBoard();
System.out.println();
board.displayAdjMatrix();
System.out.println();
// Print a closed Knight's Tour
//board.findAClosedKnightsTour();
// Print all closed Knight's Tours
//board.findAllClosedKnightsTours();
///*
// Prepare to trap input
Scanner input = new Scanner(System.in);
boolean incorrectInput = true;
int startVertex = -1;
int vertices = board.getNumOfVertices();
System.out.print("At which vertex would you like to start? (0 - " + (vertices - 1) + ")? ");
// Trap processing while input is either not an integer or an integer out of range
while (incorrectInput) {
if (input.hasNextInt()) {
startVertex = input.nextInt();
if ((startVertex < 0) || (startVertex >= vertices)) {
System.out.println("Oops! Vertex number must be between 0 and " + (vertices - 1) + ".");
System.out.println();
System.out.print("At which vertex would you like to start? (0 - " + (vertices - 1) + ")? ");
}
else {
incorrectInput = false;
}
}
else {
input.next();
System.out.println("Oops! Answer must be a whole number between 0 and " + (vertices - 1) + ".");
System.out.println();
System.out.print("At which vertex would you like to start? (0 - " + (vertices - 1) + ")? ");
}
}
// Print out selected type of Knight's Tours
// given starting vertex
System.out.println();
//board.findAnOpenKnightsTour(startVertex);
//board.findAllOpenKnightsTours(startVertex);
//board.findAClosedKnightsTour(startVertex);
//board.findAllClosedKnightsTours(startVertex);
//board.findAllKnightsTours(startVertex);
// Find tours with matches to their dates
// Inspired by:
// http://forums.xkcd.com/viewtopic.php?f=3&t=62580
board.findAllKnightsToursCalendars(startVertex);
System.out.println();
System.out.println("Highest number of date-to-move matches: " + board.getMostMatches());
//*/
}
}
Revision: 67346
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 13, 2014 08:36 by greymatters
Initial Code
package testknight;
import java.util.Scanner;
/**
*
* @author piguy
*/
public class TestKnight {
public static void main(String[] args) {
// Create array called "shape"
// Must be rectangular integer array (each row must be same length) to pass to KnightsTourOrig
// 1 denotes square onto which knight can be moved
// 0 denotes square onto which knight cannot be moved
int[][] shape = new int[][]{
{ 0, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 0, 0, 0, 0 }
};
// Take shape and turn it into custom KnightsTour object called board
KnightsTour board = new KnightsTour(shape);
System.out.println();
board.displayBoard();
System.out.println();
board.displayAdjMatrix();
System.out.println();
// Print a closed Knight's Tour
//board.findAClosedKnightsTour();
// Print all closed Knight's Tours
//board.findAllClosedKnightsTours();
///*
// Prepare to trap input
Scanner input = new Scanner(System.in);
boolean incorrectInput = true;
int startVertex = -1;
int vertices = board.getNumOfVertices();
System.out.print("At which vertex would you like to start? (0 - " + (vertices - 1) + ")? ");
// Trap processing while input is either not an integer or an integer out of range
while (incorrectInput) {
if (input.hasNextInt()) {
startVertex = input.nextInt();
if ((startVertex < 0) || (startVertex >= vertices)) {
System.out.println("Oops! Vertex number must be between 0 and " + (vertices - 1) + ".");
System.out.println();
System.out.print("At which vertex would you like to start? (0 - " + (vertices - 1) + ")? ");
}
else {
incorrectInput = false;
}
}
else {
input.next();
System.out.println("Oops! Answer must be a whole number between 0 and " + (vertices - 1) + ".");
System.out.println();
System.out.print("At which vertex would you like to start? (0 - " + (vertices - 1) + ")? ");
}
}
// Print out selected type of Knight's Tours
// given starting vertex
System.out.println();
//board.findAnOpenKnightsTour(startVertex);
//board.findAllOpenKnightsTours(startVertex);
//board.findAClosedKnightsTour(startVertex);
//board.findAllClosedKnightsTours(startVertex);
//board.findAllKnightsTours(startVertex);
// Find tours with matches to their dates
// Inspired by:
// http://forums.xkcd.com/viewtopic.php?f=3&t=62580
board.findAllKnightsToursCalendars(startVertex);
System.out.println();
System.out.println("Highest number of date-to-move matches: " + board.getMostMatches());
//*/
}
}
Initial URL
Initial Description
This code demonstrates the KnightsTour class I developed. See: http://www.snipplr.com/view/77383/knightstourjava/
Initial Title
TestKnight.java
Initial Tags
path
Initial Language
Java