iniciar-programa
define-nueva-instruccion fosa(n) como
    inicio
     si junto-a-zumbador entonces
         inicio
         coge-zumbador;
           si junto-a-zumbador entonces
               inicio
               coge-zumbador;
                si no-junto-a-zumbador entonces
                    inicio
                    repetir 3 veces deja-zumbador;
                    fin
                    sino
                    repetir 2 veces deja-zumbador;
               fin;
          fin;
    repetir 4 veces
                 inicio
                 si frente-libre entonces
                     inicio
                     avanza;
                      si junto-a-zumbador entonces
                          inicio
                          coge-zumbador;
                           si junto-a-zumbador entonces
                               inicio
                               coge-zumbador;
                                si no-junto-a-zumbador entonces
                                    inicio
                                    repetir 2 veces deja-zumbador;
                                    fosa(n);
                                    repetir 2 veces gira-izquierda;
                                    avanza;
                                    gira-izquierda;
                                    fin
                                    sino
                                    inicio
                                    repetir 2 veces deja-zumbador;
                                    repetir 2 veces gira-izquierda;
                                    avanza;
                                    gira-izquierda;
                                    fin;
                                    fin
                                     sino
                                    inicio
                                    deja-zumbador;
                                    fosa(n);
                                    repetir 2 veces gira-izquierda;
                                    avanza;
                                    gira-izquierda;
                                    fin;
                          fin
                          sino
                          inicio
                          repetir 2 veces gira-izquierda;
                          avanza;
                          gira-izquierda;
                          fin;
                     fin
                     sino
                     repetir 3 veces gira-izquierda;
                 fin;
             fin;



define-nueva-instruccion ultima(n) como
    inicio
    mientras frente-libre o  orientado-al-sur hacer
        inicio
        si junto-a-zumbador y no-orientado-al-este entonces
               inicio
                  coge-zumbador;
                    si junto-a-zumbador entonces
                        inicio
                         coge-zumbador;
                         si junto-a-zumbador entonces
                             inicio
                             coge-zumbador;
                             ultima(sucede(n));
                             fin;
                        fin;

                 fin;
            si orientado-al-este entonces
                inicio
                avanza;
                gira-izquierda;
                fin
                sino
                avanza;
             si frente-bloqueado entonces
                 inicio
                 repetir 2 veces gira-izquierda;
                 si junto-a-zumbador entonces
                 inicio
                  coge-zumbador;
                    si junto-a-zumbador entonces
                        inicio
                         coge-zumbador;
                         si junto-a-zumbador entonces
                             inicio
                             mientras frente-libre hacer avanza;
                             gira-izquierda;
                             ultima(sucede(n));
                             fin;
                        fin ;
                 fin;
            mientras frente-libre hacer avanza;
            gira-izquierda;
                 fin;
        fin;
      repetir 2 veces gira-izquierda;
      mientras frente-libre hacer avanza;
      repetir n veces si junto-a-zumbador entonces coge-zumbador;
      si no-junto-a-zumbador entonces deja-zumbador;
      apagate;
    fin;

define-nueva-instruccion dejar(n) como
inicio
 si algun-zumbador-en-la-mochila entonces
     inicio
     deja-zumbador;
     dejar(sucede(n));
     sal-de-instruccion;
     fin;
     repetir n veces coge-zumbador;
    fosa(n);
    mientras no-orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
    repetir n veces si algun-zumbador-en-la-mochila entonces deja-zumbador;
    avanza;
    ultima(0);
fin;


inicia-ejecucion
    dejar(0);
        apagate;
    termina-ejecucion
finalizar-programa
