For a world of any size, with any configuration of beepers (no square will have more than one), invert all the beepers so that, where there was a beeper previously there is no beeper... and where there was no beeper previously, there is a beeper. Consider the following example.

Solution

/**
 * Program: Invert
 * ---------------
 * Invert all the beepers so that, where there was a beeper previously 
 * there is no beeper... and where there was no beeper previously, there is a 
 * beeper.
 */
public class InvertBeepers extends SuperKarel {
	
	public void run() {
		invertRow();
		returnToWest();
		while(leftIsClear()) {
			turnLeft();
			move();
			turnRight();
			invertRow();
			returnToWest();
		}
	}

	/**
	 * Method: Invert Row
	 * ------------------
	 * Invert a single row. At the start, Karel should be facing east from 
	 * the west side of the row. After Karel should be facing east from the
	 * east side of the same row, and all beepers in the row will be inverted.
	 */
	private void invertRow() {
		while(frontIsClear()) {
			invertBeeper();
			move();
		}
		invertBeeper();
	}

	/**
	 * Method: Invert Beeper
	 * --------------------
	 * Inverts the beeper configuration on a square. If there was previously
	 * a beeper, it is picked up. If there was previously no beeper, a beeper
	 * is placed.
	 */
	private void invertBeeper() {
		if(beepersPresent()) {
			pickBeeper();
		} else {
			putBeeper();
		}
	}

	/**
	 * Method: Return To West
	 * ----------------------
	 * Turn around and go back to the wall that you came from!
	 */
	private void returnToWest() {
		turnAround();
		while(frontIsClear()) {
			move();
		}
		turnAround();
	}
}