iniciar-programa
  define-nueva-instruccion gira-derecha como repetir 3 veces gira-izquierda;
  define-nueva-instruccion media-vuelta como repetir 2 veces gira-izquierda;
   define-nueva-instruccion reparte(n) como inicio
    repetir 4 veces inicio
     si frente-libre entonces inicio
      avanza;
       si junto-a-zumbador entonces inicio
        media-vuelta; avanza; deja-zumbador; gira-izquierda;
       fin
       sino inicio
        media-vuelta; avanza; gira-izquierda;
       fin;
     fin
     sino gira-derecha;
    fin;
    fin;
   define-nueva-instruccion busca(n) como inicio
   si junto-a-zumbador entonces inicio
    si junto-a-zumbador entonces inicio
     coge-zumbador;
      si junto-a-zumbador entonces inicio
       deja-zumbador;
       sal-de-instruccion;
       fin
       sino inicio
        reparte(0);
       fin;
    fin;
   si frente-libre y junto-a-zumbador entonces inicio
   avanza;
   busca(n);
   media-vuelta; avanza; media-vuelta;
   fin;
   si izquierda-libre y junto-a-zumbador entonces inicio
   gira-izquierda;
   avanza;
   busca(n);
   media-vuelta; avanza;  gira-izquierda;
   fin;
   si derecha-libre y junto-a-zumbador entonces inicio
   gira-derecha;
   avanza;
   busca(n);
   media-vuelta; avanza; gira-derecha;
   fin;
   fin;
   fin;
   define-nueva-instruccion poda(n) como inicio
    mientras frente-libre y no junto-a-zumbador hacer avanza;
    si frente-libre y no junto-a-zumbador entonces inicio
      avanza;
    fin
    sino inicio
    si frente-bloqueado y no junto-a-zumbador entonces inicio
     media-vuelta;
     mientras frente-libre hacer avanza;
     gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     gira-izquierda;
     poda(n);
     fin;
     fin;
       si junto-a-zumbador entonces inicio
         si junto-a-zumbador entonces inicio
           coge-zumbador;
             si junto-a-zumbador entonces inicio
               coge-zumbador;
                  si junto-a-zumbador entonces inicio
                     coge-zumbador;
                        si junto-a-zumbador entonces inicio
                          coge-zumbador;
                        fin
                        sino deja-zumbador;
                 fin
                 sino deja-zumbador;
             fin
             sino deja-zumbador;
      fin
      sino deja-zumbador;
     fin;
    si frente-libre entonces inicio
    avanza;
    poda(n);
    fin
    sino inicio
     si frente-bloqueado entonces inicio
     media-vuelta;
     mientras frente-libre hacer avanza;
     gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     gira-izquierda;
     poda(n);
     fin;
    fin;
   fin;
   fin;
   fin;
      inicia-ejecucion
        busca(0);
        mientras no orientado-al-oeste hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        gira-izquierda;
        mientras frente-libre hacer avanza; media-vuelta;
        poda(0);
        apagate;
    termina-ejecucion
finalizar-programa
