iniciar-programa
    define-nueva-instruccion norte como inicio
       mientras no-orientado-al-norte hacer
          gira-izquierda;
    fin;
    define-nueva-instruccion sur como inicio
       mientras no-orientado-al-sur hacer
          gira-izquierda;
    fin;
    define-nueva-instruccion este como inicio
       mientras no-orientado-al-este hacer
          gira-izquierda;
    fin;
    define-nueva-instruccion oeste como inicio
       mientras no-orientado-al-oeste hacer
          gira-izquierda;
    fin;
    define-nueva-instruccion cuenta(n) como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          cuenta(sucede(n));
       fin
       sino inicio
          repetir n veces
             deja-zumbador;
          avanza;
          repetir n veces
             deja-zumbador;

       fin;
    fin;
    define-nueva-instruccion buscacionacion como inicio
          repetir 2 veces
             deja-zumbador;
          norte;
          si frente-libre entonces inicio
             avanza;
             si no-junto-a-zumbador entonces inicio
                buscacionacion;
                sur;
                cuenta(0);
             fin
             sino inicio
                sur;
                avanza;
             fin;
         fin;
         sur;
          si frente-libre entonces inicio
             avanza;
             si no-junto-a-zumbador entonces inicio
                buscacionacion;
                norte;
                cuenta(0);
             fin
             sino inicio
                norte;
                avanza;
             fin;
         fin;
         este;
          si frente-libre entonces inicio
             avanza;
             si no-junto-a-zumbador entonces inicio
                buscacionacion;
                oeste;
                cuenta(0);
             fin
             sino inicio
                oeste;
                avanza;
             fin;
         fin;
         oeste;
          si frente-libre entonces inicio
             avanza;
             si no-junto-a-zumbador entonces inicio
                buscacionacion;
                este;
                cuenta(0);
             fin
             sino inicio
                este;
                avanza;
             fin;
         fin;
    fin;
    define-nueva-instruccion col como inicio
       sur;
       mientras frente-libre hacer
          avanza;
       oeste;
       mientras frente-libre hacer
          avanza;

    fin;
    define-nueva-instruccion orientacionacion como inicio
       sur;
       mientras frente-libre hacer
          avanza;
       oeste;
       mientras frente-libre hacer
          avanza;
       norte;
       avanza;
       avanza;
       este;
       avanza;
       avanza;
    fin;
    define-nueva-instruccion positivo como inicio
       sur;
       avanza;
       este;
       mientras junto-a-zumbador y frente-libre hacer
          avanza;
       oeste;
       avanza;
       norte;
       mientras junto-a-zumbador y frente-libre hacer
          avanza;
       sur;
       avanza;
       oeste;
    fin;
    define-nueva-instruccion divide como inicio
       si junto-a-zumbador entonces inicio
          repetir 2 veces
             coge-zumbador;
          divide;
          deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion compara(n) como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          compara(sucede(n));
       fin
       sino inicio
          deja-zumbador;
          col;
             repetir n veces inicio
                si junto-a-zumbador entonces
                   coge-zumbador;
          fin;
          repetir n veces
             deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion busca1 como inicio
       mientras frente-libre y junto-a-zumbador hacer
          avanza;
       si no-junto-a-zumbador y frente-bloqueado y orientado-al-oeste entonces inicio
          sur;
          avanza;
          este;
          mientras no-junto-a-zumbador y frente-libre hacer
             avanza;
       fin;
       mientras orientado-al-este y frente-libre hacer inicio
          mientras frente-libre hacer
             avanza;
       fin;
       si no-junto-a-zumbador y frente-bloqueado y orientado-al-este y derecha-bloqueada entonces inicio
          col;
          apagate;
       fin;
       si junto-a-zumbador y orientado-al-oeste entonces inicio
          apagate;
       fin;
       si junto-a-zumbador entonces
          busca1;
       si no-junto-a-zumbador y frente-bloqueado y orientado-al-este entonces inicio
          sur;
          avanza;
          oeste;
          mientras no-junto-a-zumbador y frente-libre hacer
             avanza;
       fin;
       si junto-a-zumbador y frente-bloqueado y orientado-al-oeste y izquierda-bloqueada entonces
          apagate;
       si junto-a-zumbador entonces
          busca1;
       si no-junto-a-zumbador entonces inicio
          buscacionacion;
          divide;
          compara(0);
          orientacionacion;
          positivo;
       fin;
    fin;
    inicia-ejecucion
       mientras algun-zumbador-en-la-mochila hacer inicio
          orientacionacion;
          positivo;
          busca1;
       fin;
        apagate;
    termina-ejecucion
finalizar-programa