iniciar-programa
 define-nueva-instruccion compara como
   inicio
    repetir 2 veces
      inicio
     repetir 3 veces gira-izquierda;
     mientras frente-libre hacer avanza;
      fin;
      repetir 2 veces gira-izquierda;
       mientras no junto-a-zumbador y frente-libre hacer avanza;
       si junto-a-zumbador entonces
          gira-izquierda;
     mientras junto-a-zumbador y frente-libre hacer avanza;
     mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
     repetir 2 veces gira-izquierda;
     mientras frente-libre hacer avanza;
     gira-izquierda;
     mientras frente-libre hacer avanza;
      gira-izquierda;
     mientras derecha-bloqueada y frente-libre hacer avanza;
      repetir 2 veces gira-izquierda;
      si frente-libre entonces avanza;
      mientras junto-a-zumbador hacer coge-zumbador;
        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 y frente-libre hacer avanza;
       si junto-a-zumbador entonces
        gira-izquierda;
        mientras junto-a-zumbador y frente-libre hacer avanza;
        
        si frente-libre entonces
          inicio
            repetir 2 veces gira-izquierda;
            repetir 2 veces si frente-libre entonces avanza;
           fin
           sino
             inicio
               repetir 2 veces gira-izquierda;
               si frente-libre entonces avanza;
             fin;
             repetir 2 veces gira-izquierda;
              si derecha-libre entonces
             mientras algun-zumbador-en-la-mochila hacer deja-zumbador;

             si derecha-bloqueada y junto-a-zumbador  entonces
             inicio
              si frente-libre entonces avanza;
              mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
              fin;
             si frente-libre entonces avanza;

      mientras junto-a-zumbador hacer
          inicio
             coge-zumbador;
              repetir 2 veces gira-izquierda;
              si frente-libre entonces avanza;
              si junto-a-zumbador entonces
                coge-zumbador;
             si junto-a-zumbador entonces
                inicio
                 repetir 2 veces gira-izquierda;
                 si frente-libre entonces
                  avanza;
                fin
                   sino
                inicio
                    mientras algun-zumbador-en-la-mochila hacer
                     deja-zumbador;
                     repetir 2 veces gira-izquierda;
                     si frente-libre entonces avanza;
                     mientras junto-a-zumbador hacer coge-zumbador;
                     repetir 2 veces gira-izquierda;
                     repetir 2 veces
                       inicio
                         mientras frente-libre hacer avanza;
                         gira-izquierda;
                         fin;
                     mientras derecha-bloqueada y frente-libre hacer avanza;
                     repetir 3 veces gira-izquierda;
                     si frente-libre entonces avanza;
                      mientras algun-zumbador-en-la-mochila hacer
                     deja-zumbador;

                     apagate;
                  fin;
              fin;
         si no junto-a-zumbador entonces
            inicio
                 mientras algun-zumbador-en-la-mochila hacer
                     deja-zumbador;
                repetir 2 veces gira-izquierda;
                si frente-libre entonces avanza;
                mientras junto-a-zumbador hacer coge-zumbador;
                 mientras frente-libre hacer avanza;
                  repetir 3 veces gira-izquierda;
                  si frente-libre entonces avanza;

                  si frente-bloqueado y junto-a-zumbador entonces
                    inicio
                     coge-zumbador;
                     repetir 3 veces gira-izquierda;
                     si frente-libre entonces avanza;
                     deja-zumbador;
                     repetir 2 veces gira-izquierda;
                     si frente-libre entonces avanza;
                     repetir 3 veces gira-izquierda;
                    fin;
                    mientras algun-zumbador-en-la-mochila hacer
                     deja-zumbador;
                     apagate;

              fin;

    fin;


 define-nueva-instruccion recorre (n) como
    inicio
     si orientado-al-este entonces
     gira-izquierda;

       mientras junto-a-zumbador y frente-libre y orientado-al-norte hacer
        avanza;
          si no-junto-a-zumbador y orientado-al-norte  entonces
            inicio
                  repetir 2 veces gira-izquierda;
                  si frente-libre entonces
                    avanza;


             fin;
           si junto-a-zumbador entonces
            inicio
                 coge-zumbador;
                recorre (sucede (n));
             fin;
           mientras frente-libre y orientado-al-sur y izquierda-libre hacer
             si frente-libre entonces avanza;


           si orientado-al-sur entonces
             gira-izquierda;

             si frente-libre entonces avanza;
             si frente-bloqueado y orientado-al-este y derecha-bloqueada entonces
                 inicio
                  recorre (n);
                  fin;


              mientras frente-libre y orientado-al-este y junto-a-zumbador hacer
                   recorre (n) ;

             si frente-bloqueado y orientado-al-este entonces
                 inicio
                 repetir n veces deja-zumbador;
                 compara;
                 fin;


       fin;




     inicia-ejecucion


  mientras no-junto-a-zumbador y frente-libre hacer
     avanza;
     si frente-libre entonces avanza;

        recorre (0);

        apagate;
    termina-ejecucion
finalizar-programa
