iniciar-programa
define-nueva-instruccion intercambia(n) como
    inicio
    si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        intercambia(sucede(n));
        fin
        sino
        inicio
        mientras no-orientado-al-este hacer
        gira-izquierda;
        avanza;
        repetir n veces
        deja-zumbador;
        gira-izquierda;
        gira-izquierda;
        avanza;
        mientras algun-zumbador-en-la-mochila hacer
        deja-zumbador;
        gira-izquierda;
        gira-izquierda;
        avanza;
        fin;
    fin;

define-nueva-instruccion cuenta(n) como
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
cuenta(sucede(n));
fin
sino
inicio
mientras algun-zumbador-en-la-mochila hacer
deja-zumbador;
avanza;
repetir n veces
inicio
si junto-a-zumbador entonces
coge-zumbador;
fin;
si junto-a-zumbador entonces
    inicio
    repetir n veces
    deja-zumbador;
    fin
    sino
    inicio
    gira-izquierda;
    gira-izquierda;
    avanza;
    intercambia(0);
    fin;
fin;
fin;
    inicia-ejecucion
    mientras junto-a-zumbador hacer
    inicio
    coge-zumbador;
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    avanza;
    mientras no-orientado-al-este hacer
    gira-izquierda;
    avanza;
    mientras no-junto-a-zumbador hacer
    avanza;
        mientras junto-a-zumbador hacer
            inicio
        avanza;
        si junto-a-zumbador entonces
        inicio
        gira-izquierda;
        gira-izquierda;
        avanza;
        gira-izquierda;
        gira-izquierda;
        fin;
        cuenta(0);
            fin;
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa 