class program {
void derecha(){
iterate (3){
turnleft();
}
}
void bache(){
while(frontIsClear){
putbeeper();
move();
}
turnleft();
while(frontIsClear){
putbeeper();
move();
}
turnleft();
while(rightIsBlocked){
putbeeper();
move();
}
derecha();
if(notNextToABeeper)
putbeeper();
move();
}
program() {
while(notNextToABeeper){
while (rightIsBlocked){
if (nextToABeeper){
turnoff();
}
putbeeper();
move();
}
derecha();
bache();
}
turnoff();
}
}
En este problema usamos dos subrutinas una para que Karel pueda girar a la derecha, y la otra para que pase por el bache. Hay varios ciclos repetitivos usando While lo que permite que Karel se adapte al mundo que le pongamos, es decir que podemos cambiar el tamaño de los baches y sus distancias y el mismo programa sin cambios pasara hasta llegar al zumbador de la meta.