iniciar-programa
define-nueva-instruccion gira(n) como
inicio
repetir n veces gira-izquierda;
fin;
define-nueva-instruccion deja(n) como
inicio
si si-es-cero(n)   entonces
inicio
gira(3);
mientras frente-libre hacer avanza;
gira(3);
mientras frente-libre hacer avanza;
gira(2);
sal-de-instruccion;
fin;
repetir precede(n) veces
inicio
si no-junto-a-zumbador entonces
deja-zumbador;
si frente-libre entonces
avanza;
fin;
gira(2);
repetir precede(n) veces si frente-libre entonces avanza;
gira(3);
si frente-libre entonces
avanza;
gira(3);
avanza;
deja(precede(precede(n)));
fin;
define-nueva-instruccion pira(n) como
inicio
gira(2);
mientras frente-libre hacer avanza;
gira(2);
deja(sucede(sucede(n)));
si algun-zumbador-en-la-mochila entonces
inicio
pira(sucede(sucede(n)));
fin
sino
inicio
mientras junto-a-zumbador hacer
inicio
avanza;
si no-junto-a-zumbador entonces
inicio
gira(2);
avanza;
apagate;
fin;
gira(1);
avanza;
gira(3);
fin;

apagate;
fin;
fin;

    inicia-ejecucion

    mientras no-orientado-al-este hacer gira(1);
    si ningun-zumbador-en-la-mochila entonces
    inicio
    mientras junto-a-zumbador hacer
inicio
avanza;
si no-junto-a-zumbador entonces
inicio
gira(2);
avanza;
apagate;
fin;
gira(1);
avanza;
gira(3);
fin;
    fin;
    si no-junto-a-zumbador entonces
    deja-zumbador;
    si algun-zumbador-en-la-mochila entonces
    inicio
    coge-zumbador;
    pira(2);
    fin
    sino
        apagate;
    termina-ejecucion
finalizar-programa
