public static String stringRepresentation() {
		final StringBuilder builder = new StringBuilder();
		switch (PuzzleConfiguration.numOfTiles) {
		case 9:
			builder.append("8-puzzle");
			break;
		case 16:
			builder.append("15-puzzle");
			break;
		default:
			return "Unknown puzzle type";
		}
		switch (PuzzleConfiguration.algorithmType) {
		case ALGORITHM_ASTAR:
			builder.append(", A*");
			break;
		case ALGORITHM_IDASTAR:
			builder.append(", IDA*");
			break;
		default:
			return "Unknown algorithm type";
		}
		switch (PuzzleConfiguration.heuristicType) {
		case HEURISTIC_PD:
			builder.append(" / Pattern Database");
			break;
		case HEURISTIC_MD:
			builder.append(" / Manhattan Distance");
			break;
		case HEURISTIC_LC:
			builder.append(" / Manhattan Distance + Linear Conflict");
			break;
		default:
			return "Unknown heuristic type";
		}
		if (PuzzleConfiguration.algorithmType == ALGORITHM_IDASTAR) {
			final int numOfThreads = PuzzleConfiguration.getNumOfThreads();
			if (numOfThreads == 1) {
				builder.append(" / Single-threaded");
			} else {
				builder.append(" / Multi-threaded (" + numOfThreads + ")");
			}
		}
		return builder.toString();
	}