iniciar-programa
define-nueva-instruccion gira(x) como inicio
    repetir x veces inicio
    gira-izquierda;
    fin;
    fin;
    inicia-ejecucion
    si orientado-al-norte entonces inicio
    gira(3);
    fin;
    si orientado-al-oeste entonces inicio
    gira(2);
    fin;
    si orientado-al-sur entonces inicio
    gira(1);
    fin;
    si junto-a-zumbador entonces inicio
    gira(1);
    fin;
    mientras no-junto-a-zumbador hacer inicio
    avanza;
    fin;
gira(1);
    mientras junto-a-zumbador y orientado-al-norte hacer inicio
    mientras junto-a-zumbador y orientado-al-norte hacer inicio
    si frente-libre entonces inicio
    avanza;
    fin
    sino inicio
    gira(2);
    fin;
     gira(1);
     si frente-libre entonces inicio
       avanza;
       si junto-a-zumbador entonces inicio
       fin
       sino inicio
       gira(2);
       avanza;
       avanza;
       fin;
       si no-junto-a-zumbador entonces inicio
       gira(2);
       avanza;
       gira(3);
       fin;
       fin
       sino inicio
       gira(3);
       avanza;
       fin;
       fin;
       si orientado-al-este o orientado-al-oeste entonces inicio
 mientras junto-a-zumbador hacer inicio
 mientras junto-a-zumbador hacer inicio
       coge-zumbador;
       si frente-libre entonces inicio
       avanza;
       fin
       sino inicio
       si orientado-al-este entonces inicio
       gira(1);
       fin
       sino inicio
       gira(3);
       fin;
       avanza;
       fin;
       fin;
       si orientado-al-este o orientado-al-oeste entonces inicio
       si no-junto-a-zumbador entonces inicio
       gira(2);
       avanza;
       si orientado-al-este entonces inicio
       gira(1);
       fin
       sino inicio
       gira(3);
       fin;
       si frente-libre entonces inicio
       avanza;
       fin
       sino inicio
       gira(3);
       avanza;
       gira(1);
       avanza;
       gira(1);
       avanza;
       gira(3);
       fin;
       fin;
        fin;
       fin;
       si orientado-al-norte y no-junto-a-zumbador entonces inicio
gira(2);
        mientras frente-libre y orientado-al-sur hacer inicio
         mientras frente-libre y orientado-al-sur hacer inicio
        avanza;
        fin;
        gira(1);
        si frente-libre entonces inicio
        avanza;
        gira(3);
        si frente-bloqueado entonces inicio
        gira(1);
        fin
        sino inicio
        avanza;
        gira(3);
        avanza;
        gira(1);
        fin;
        fin;
        si frente-bloqueado entonces inicio
        gira(2);
        fin;
        fin;
        si junto-a-zumbador entonces inicio
        avanza;
        fin;
        si frente-bloqueado entonces inicio
        gira(2);
        fin;
        mientras no-junto-a-zumbador hacer inicio
        avanza;
        si frente-bloqueado entonces inicio
        si orientado-al-oeste entonces inicio
        gira(3);
        avanza;
        si izquierda-bloqueada entonces inicio
        gira(2);
        avanza;
        gira(1);
        fin
        sino inicio
        gira(1);
        avanza;
        gira(1);
        avanza;
        gira(3);
        fin;
        fin
        sino inicio
        gira(2);
        fin;
       fin;
       fin;
       si orientado-al-oeste entonces inicio
       gira(3);
       fin
       sino inicio
       gira(1);
       fin;
       fin;
       fin;
       fin;
       si orientado-al-norte entonces inicio
       gira(2);
       fin;
mientras frente-libre hacer inicio
avanza;
fin;
gira(3);
mientras frente-libre hacer inicio
avanza;
fin;
mientras algun-zumbador-en-la-mochila hacer inicio
deja-zumbador;
fin;
       apagate;
    termina-ejecucion
finalizar-programa
