iniciar-programa
define-nueva-instruccion gira(n) como inicio
      repetir n veces
         gira-izquierda;
   fin;
   define-nueva-instruccion norte como inicio
      mientras no-orientado-al-norte hacer
         gira(1);
   fin;
   define-nueva-instruccion sur como inicio
      mientras no-orientado-al-sur hacer
         gira(1);
   fin;
   define-nueva-instruccion este como inicio
      mientras no-orientado-al-este hacer
         gira(1);
   fin;
   define-nueva-instruccion oeste como inicio
      mientras no-orientado-al-oeste hacer
         gira(1);
   fin;
   define-nueva-instruccion busca como inicio
      si algun-zumbador-en-la-mochila entonces inicio
         deja-zumbador;
         si frente-libre entonces inicio
            norte;
            si frente-libre entonces inicio
               avanza;
               si derecha-libre entonces inicio
                  sur;
                  avanza;
                  si frente-libre entonces inicio
                     avanza;
                     si izquierda-libre entonces inicio
                        norte;
                        avanza;
                        si derecha-libre entonces
                           apagate;
                     fin
                     sino inicio
                        norte;
                        avanza;
                     fin;
                  fin
                  sino inicio
                     apagate;
                  fin;
               fin
               sino inicio
                  sur;
                  avanza;
               fin;
            fin
            sino inicio
               sur;
               si frente-libre entonces inicio
                  avanza;
                  si izquierda-libre entonces inicio
                     norte;
                     avanza;
                     si derecha-libre entonces
                        apagate;
                  fin
                  sino inicio
                     norte;
                     avanza;
                  fin;
               fin;
            fin;
         fin;
         norte;
         si frente-libre y algun-zumbador-en-la-mochila entonces inicio
            avanza;
            si no-junto-a-zumbador entonces
               busca;
            sur;
            avanza;
         fin;
         sur;
         si frente-libre y algun-zumbador-en-la-mochila entonces inicio
            avanza;
            si no-junto-a-zumbador entonces
               busca;
            norte;
            avanza;
         fin;
         este;
         si frente-libre y algun-zumbador-en-la-mochila entonces inicio
            avanza;
            si no-junto-a-zumbador entonces
               busca;
            oeste;
            avanza;
         fin;
         si junto-a-zumbador entonces inicio
            coge-zumbador;
         fin;
      fin;
   fin;

   define-nueva-instruccion entrada como inicio
      si derecha-bloqueada y orientado-al-norte o izquierda-bloqueada y orientado-al-sur o orientado-al-oeste entonces inicio
         deja-zumbador;
         norte;
         si frente-libre entonces inicio
           avanza;
           si no-junto-a-zumbador entonces inicio
              entrada;
              sur;
              si junto-a-zumbador entonces
                 coge-zumbador;
              avanza;
           fin
           sino inicio
              sur;
              avanza;
           fin;
         fin;
         sur;
         si frente-libre entonces inicio
           avanza;
           si no-junto-a-zumbador entonces inicio
              entrada;
              norte;
              si junto-a-zumbador entonces
                 coge-zumbador;
              avanza;
           fin
           sino inicio
              norte;
              avanza;
           fin;
         fin;
      fin
      sino inicio
         deja-zumbador;
         este;
         avanza;
         si frente-libre entonces inicio
            norte;
            si frente-libre entonces inicio
               avanza;
               este;
               si frente-libre entonces inicio
                  sur;
                  avanza;
                  oeste;
                  avanza;
               fin
               sino inicio
                  sur;
                  avanza;
                  este;
                  busca;
                  oeste;
                  avanza;
                  si junto-a-zumbador entonces
                     coge-zumbador;
                  entrada;
               fin;
            fin
            sino inicio
               sur;
               si frente-libre entonces inicio
                  avanza;
                  este;
                  si frente-libre entonces inicio
                     norte;
                     avanza;
                     oeste;
                     avanza;
                  fin
                  sino inicio
                     norte;
                     avanza;
                     este;
                     busca;
                     oeste;
                     avanza;
                     si junto-a-zumbador entonces
                        coge-zumbador;
                     entrada;
                  fin;
               fin
               sino inicio
                  este;
                  busca;
               fin;
            fin;
         fin
         sino inicio
            busca;
            oeste;
            avanza;
            si junto-a-zumbador entonces
               coge-zumbador;
            entrada;
         fin;
      fin;
   fin;

    inicia-ejecucion
       norte;
       entrada;
        apagate;
    termina-ejecucion
finalizar-programa