public static String[] getDirections(final byte[] initState) {
		final int pathLength = Algorithm.shortestPath.length();
		final String[] directions = new String[pathLength];
		if (pathLength != 0) {
			final byte[] tiles = getMovedTiles(Algorithm.shortestPath, initState);
			for (int i = 0; i < pathLength; ++i) {
				final byte tile = tiles[i];
				final char dir = Algorithm.shortestPath.charAt(i);
				String direction;
				if (dir == 'L') {
					direction = "right";
				} else if (dir == 'R') {
					direction = "left";
				} else if (dir == 'U') {
					direction = "down";
				} else {
					direction = "up";
				}
				final StringBuilder builder = new StringBuilder();
				final int iPlusOne = i + 1;
				if (iPlusOne < 10) {
					builder.append(" ");
				}
				if (tile < 10) {
					builder.append(iPlusOne + ".  " + tile + " - " + direction);
				} else {
					builder.append(iPlusOne + ". " + tile + " - " + direction);
				}
				directions[i] = builder.toString();
			}
		}
		return directions;
	}