iniciar-programa
define-nueva-instruccion gir como
    inicio
    si junto-a-zumbador entonces
    inicio
    repetir 3 veces gira-izquierda;
    fin
    sino
    inicio
    repetir 2 veces gira-izquierda;
    si frente-libre entonces avanza;
    gira-izquierda;
    fin;
 fin;
    define-nueva-instruccion ubicate como
    inicio
    si frente-libre entonces
    inicio
    avanza;
    gira-izquierda;
    mientras junto-a-zumbador y frente-libre hacer avanza;
    gir;
    fin
    sino
    inicio
    gira-izquierda;
    mientras derecha-bloqueada hacer avanza;
    repetir 3 veces gira-izquierda;
    avanza;
    fin;
    fin;
    define-nueva-instruccion escala(n) como
    inicio
    si no(orientado-al-oeste y izquierda-bloqueada) entonces
    inicio
    si no junto-a-zumbador entonces
    inicio
    si frente-libre entonces
    inicio
    ubicate;
    escala(n);
    fin
    sino
    inicio  
    repetir 2 veces gira-izquierda;
    avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 2 veces gira-izquierda;
    mientras no-junto-a-zumbador hacer avanza;
    repetir 2 veces gira-izquierda;
    escala(n);
    fin;
    fin
    sino
    inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    escala(sucede(n));
    fin;
    fin;
    fin
    sino
    inicio
    si junto-a-zumbador y no(si-es-cero(n)) entonces
    inicio
    coge-zumbador;
    escala(precede(n));
    fin
    sino
    inicio
    si no-junto-a-zumbador y no(si-es-cero(n))
    entonces
    inicio

    repetir n veces
    inicio
    si algun-zumbador-en-la-mochila entonces deja-zumbador;
    fin;
    apagate;
    fin
    sino
    inicio
    repetir 3 veces gira-izquierda;
    avanza;
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
    repetir 2 veces gira-izquierda;
    avanza;
    gira-izquierda;
    mientras junto-a-zumbador hacer coge-zumbador;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras derecha-bloqueada hacer avanza;
    repetir 3 veces gira-izquierda;
    avanza;
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
    repetir 2 veces gira-izquierda;
    avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-norte hacer gira-izquierda;
    avanza;
    repetir 3 veces gira-izquierda;
    mientras no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer coge-zumbador;
    apagate;
    fin;
    fin;
    fin;
    fin;
    inicia-ejecucion
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
    ubicate;
    escala(0);
    repetir 2 veces gira-izquierda;
    avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 2 veces gira-izquierda;
    mientras no-junto-a-zumbador hacer avanza;
        apagate;
    termina-ejecucion
finalizar-programa
