iniciar-programa
define-nueva-instruccion junta como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        si frente-libre entonces
        inicio
           avanza;
           junta;
        fin;
        deja-zumbador;
    fin;
fin;
define-nueva-instruccion verifica(n) como
   inicio
      si si-es-cero(n) entonces
      inicio
         si junto-a-zumbador entonces
         inicio
            coge-zumbador;
            si no-junto-a-zumbador entonces
            inicio
               repetir 3 veces
                  gira-izquierda;
               avanza;
               deja-zumbador;
               gira-izquierda;
               gira-izquierda;
               avanza;
               repetir 3 veces
                  gira-izquierda;
            fin;
         fin;
      fin
      sino
         si junto-a-zumbador entonces
         inicio
           coge-zumbador;
           verifica(precede(n));
         fin;
   fin;
   define-nueva-instruccion coge(n) como
   inicio
       si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         coge(sucede(n));
       fin
       sino
       inicio
          repetir 4 veces
             avanza;
          repetir 3 veces
             gira-izquierda;
           verifica(precede(n));
           mientras frente-libre hacer
          inicio
             avanza;
              verifica(precede(n));
          fin;
       fin;
   fin;
    inicia-ejecucion
       mientras no orientado-al-oeste hacer
          gira-izquierda;
       mientras frente-libre hacer
          avanza;
       gira-izquierda;
       mientras frente-libre hacer
          avanza;
       gira-izquierda;
       gira-izquierda;
       avanza;
       coge(0);
       repetir 3 veces
          gira-izquierda;
       avanza;
       repetir 3 veces
          gira-izquierda;
       mientras frente-libre hacer
       inicio
          mientras frente-libre y no-junto-a-zumbador hacer
             avanza;
          si junto-a-zumbador entonces
          inicio
            junta;
            si frente-libre entonces
               avanza;
          fin;
       fin;
       repetir 3 veces
          gira-izquierda;
       avanza;
       repetir 3 veces
          gira-izquierda;
       mientras frente-libre o junto-a-zumbador hacer
       inicio
           mientras frente-libre y no-junto-a-zumbador hacer
              avanza;
           mientras junto-a-zumbador hacer
               coge-zumbador;
       fin;
       gira-izquierda;
       avanza;
       mientras algun-zumbador-en-la-mochila hacer
          deja-zumbador;
       gira-izquierda;
       mientras frente-libre hacer
          avanza;
       gira-izquierda;
       avanza;
       avanza;
       gira-izquierda;
       mientras frente-libre o junto-a-zumbador hacer
       inicio
           mientras frente-libre y no-junto-a-zumbador hacer
              avanza;
           si junto-a-zumbador entonces
           inicio
              mientras junto-a-zumbador hacer
                 coge-zumbador;
              gira-izquierda;
              avanza;
              gira-izquierda;
              mientras frente-libre hacer
                 avanza;
              gira-izquierda;
              gira-izquierda;
              mientras algun-zumbador-en-la-mochila hacer
              inicio
                 deja-zumbador;
                 si frente-libre entonces
                    avanza;
              fin;
              gira-izquierda;
              gira-izquierda;
              mientras frente-libre hacer
                 avanza;
              gira-izquierda;
              avanza;
              gira-izquierda;
           fin;
       fin;
       gira-izquierda;
       avanza;
       gira-izquierda;
       mientras no-junto-a-zumbador hacer
          avanza;
       coge-zumbador;
       mientras frente-libre hacer
       inicio
          avanza;
          coge-zumbador;
       fin;
       gira-izquierda;
       mientras frente-libre hacer
          avanza;
       mientras algun-zumbador-en-la-mochila hacer
          deja-zumbador;
       apagate;
    termina-ejecucion
finalizar-programa
