iniciar-programa

define-nueva-instruccion despachar como inicio
    si junto-a-zumbador y algun-zumbador-en-la-mochila entonces coge-zumbador;

    gira-izquierda;
    avanza;
    repetir 2 veces deja-zumbador;
    repetir 2 veces gira-izquierda;
    avanza;
    gira-izquierda;

    si junto-a-zumbador y algun-zumbador-en-la-mochila entonces despachar;
fin;

define-nueva-instruccion reordenar como inicio
    si no-junto-a-zumbador entonces inicio
        si frente-libre entonces avanza;
        si frente-bloqueado y no-junto-a-zumbador entonces apagate;
        reordenar;
    fin;

    si orientado-al-oeste entonces avanza;
    si no-orientado-al-oeste entonces repetir 2 veces gira-izquierda;
    mientras junto-a-zumbador hacer coge-zumbador;
fin;



    inicia-ejecucion

    mientras junto-a-zumbador y algun-zumbador-en-la-mochila hacer inicio
        despachar;
        si frente-libre y no-junto-a-zumbador entonces avanza;
    fin;

    gira-izquierda;
    si derecha-libre y no junto-a-zumbador entonces apagate;
    si derecha-bloqueada y no-junto-a-zumbador entonces apagate;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 2 veces gira-izquierda;

    mientras frente-libre y no-junto-a-zumbador hacer inicio
        reordenar;
        mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
        repetir 2 veces gira-izquierda;
        avanza;
    fin;






        apagate;
    termina-ejecucion
finalizar-programa
