iniciar-programa
     define-nueva-instruccion media-Vuelta como inicio
        gira-izquierda;
        gira-izquierda;
    fin;

    define-nueva-instruccion gira-Derecha como inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
    fin;

    define-nueva-instruccion compara(n) como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       compara(sucede(n));
       fin
       sino
       inicio
        media-vuelta;
        avanza;
        avanza;
        repetir n veces
        si junto-a-zumbador entonces inicio
           coge-zumbador;
           fin
           sino
        si orientado-al-sur y no junto-a-zumbador entonces  inicio
        media-vuelta;
        avanza; avanza;
        repetir n veces deja-zumbador;
        media-vuelta;
        avanza; avanza;
        mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
        fin;
        media-vuelta;  avanza;
        gira-izquierda;

        fin;
        si junto-a-zumbador entonces inicio
         repetir n veces deja-zumbador;
         media-vuelta;
         avanza;
         avanza;
          mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
        fin;
        sal-de-instruccion;
         fin
         sino si orientado-al-sur y no junto-a-zumbador entonces inicio
           repetir n veces deja-zumbador;
           media-vuelta;
           avanza;
           avanza;
           repetir n veces deja-zumbador;
           sal-de-instruccion;
           fin;


       fin;
      fin;

    define-nueva-instruccion cheqa como inicio
     gira-derecha;
     avanza;
     si junto-a-zumbador entonces inicio
      media-vuelta;
      avanza;
      avanza;
      si junto-a-zumbador entonces inicio
      compara(0);
      fin
      sino inicio
       media-vuelta;  avanza;
       gira-izquierda;
       sal-de-instruccion;
       fin;

      fin
      sino si no junto-a-zumbador entonces  inicio
          media-vuelta;
          avanza;
          avanza;
          sal-de-instruccion;
          fin;
          fin;















     define-nueva-instruccion agarra(n) como
     inicio
       si junto-a-zumbador y orientado-al-oeste y frente-bloqueado entonces inicio
          coge-zumbador;
            agarra(sucede(n));
           fin
           sino si no junto-a-zumbador y orientado-al-oeste y frente-bloqueado entonces inicio
           media-vuelta;
               mientras frente-libre hacer inicio
                  avanza;
                  fin;
            repetir n veces deja-zumbador;
            media-vuelta;
            mientras frente-libre hacer inicio
                  avanza;
                  fin;
                  media-vuelta;
            fin;



            si orientado-al-este y no junto-a-zumbador y no si-es-cero(n) entonces inicio
              cheqa;
                 fin
               sino

           si orientado-al-este y no junto-a-zumbador y  si-es-cero(n) entonces inicio
           gira-izquierda;
           avanza;
           fin;




         si junto-a-zumbador  y orientado-al-norte entonces inicio
         coge-zumbador;
         agarra(sucede(n));
         fin
         sino si no junto-a-zumbador entonces inicio
         mientras algun-zumbador-en-la-mochila y orientado-al-norte  hacer inicio
         deja-zumbador;
         fin;
         si orientado-al-norte entonces inicio
         media-vuelta;
         avanza;
         avanza;
         fin;
         fin;


         si junto-a-zumbador y no si-es-cero(n) y orientado-al-sur entonces inicio
         coge-zumbador;
         agarra(precede(n));
         fin
         sino
         si orientado-al-sur y  si-es-cero(n) o no junto-a-zumbador  y orientado-al-sur entonces inicio
         media-vuelta;
         avanza;
          mientras algun-zumbador-en-la-mochila y orientado-al-norte  hacer inicio
          deja-zumbador;
          fin;
          fin;
          si orientado-al-norte entonces inicio
          gira-derecha;
          si frente-libre entonces inicio
          avanza;
          agarra(n);
          fin;
          fin;

          si orientado-al-este y frente-libre y no junto-a-zumbador entonces inicio
           gira-derecha;
           avanza;
           agarra(n);
           fin;

           si orientado-al-oeste y ningun-zumbador-en-la-mochila y no junto-a-zumbador entonces inicio
              gira-izquierda;
              avanza;
              gira-derecha;
           fin;

          si junto-a-zumbador y no si-es-cero(n) y orientado-al-oeste entonces inicio
         coge-zumbador;
         agarra(precede(n));
         fin
         sino
         si orientado-al-oeste y  si-es-cero(n) o no junto-a-zumbador  y orientado-al-oeste entonces inicio
         gira-derecha;
         avanza;
          mientras algun-zumbador-en-la-mochila y orientado-al-norte  hacer inicio
          deja-zumbador;
          fin;
          fin;
          si orientado-al-norte entonces inicio
          avanza;
          gira-derecha;
         mientras junto-a-zumbador hacer inicio
         coge-zumbador;
         fin;
          fin;

         si algun-zumbador-en-la-mochila   y orientado-al-este entonces inicio
         deja-zumbador;
         agarra(sucede(n));
         fin
         sino si ningun-zumbador-en-la-mochila entonces inicio

         si orientado-al-este y frente-libre entonces inicio
         gira-derecha;
         avanza;
         gira-izquierda;
         si frente-libre entonces inicio
          avanza;
          agarra(n);
          fin;
         fin;
         fin;





             repetir n veces coge-zumbador;
              apagate;

            fin;




    inicia-ejecucion

    mientras no orientado-al-oeste hacer gira-izquierda;
    agarra(0);






        apagate;
    termina-ejecucion
finalizar-programa


