Votre objectif est de remplir le premier rang du monde de Karel avec des bips sonores. Vous pouvez supposer que Karel commence dans le coin inférieur gauche, face à l'est. Par exemple, si vous avez exécuté votre programme sur le monde à gauche, le monde devrait être produit à droite.

Votre programme devrait également fonctionner pour des mondes de tailles différentes. Par exemple, si nous exécutons le même programme EXACT sur ce monde légèrement plus vaste, Karel devrait toujours pouvoir placer une gamme complète de bips sonores sans se bloquer. Cela signifie que nous ne pouvons pas utiliser une boucle for. Nous ne savons pas d'avance quelle sera la taille du monde!

Solution

/**
 * Program: Lignebip
 * -------------------
 * Remplissez le premier rang avec des avertisseurs sonores. Suppose que Karel
 * commence dans le coin inférieur gauche de l'écran, face à l'est.
 */
public class BeeperLine extends SuperKarel {

	public void run() {
		while(frontIsClear()) {
			putBeeper();
			move();
		}
		// Cette ligne est nécessaire pour placer le bip final. Le nombre de fois
		// que Karel se déplace est égal à un de moins que le nombre de fois où
		// Karel a placé un avertisseur (si le monde mesure cinq carrés de large,
		// nous plaçons 5 avertisseurs mais ne bougeons que 4 fois.
		putBeeper();
	}
}