iniciar-programa
 define-nueva-instruccion a como
  inicio
   deja-zumbador;
   si orientado-al-este entonces
    inicio
     si frente-libre entonces
      inicio
       si izquierda-libre entonces
        inicio
         gira-izquierda;
         avanza;
         si derecha-libre entonces
             apagate;
         gira-izquierda;
         gira-izquierda;
         avanza;
         gira-izquierda;
        fin
       sino
        inicio
         si derecha-libre entonces
          inicio
           repetir 3 veces
               gira-izquierda;
           avanza;
           si izquierda-libre entonces
               apagate;
           gira-izquierda;
           gira-izquierda;
           avanza;
           repetir 3 veces
               gira-izquierda;
          fin;
        fin;
      fin;
    fin;
   repetir 4 veces
    inicio
     si frente-libre entonces
      inicio
       avanza;
       si no-junto-a-zumbador y algun-zumbador-en-la-mochila entonces
           a;
       gira-izquierda;
       gira-izquierda;
       avanza;
       gira-izquierda;
       gira-izquierda;
      fin;
     gira-izquierda;
    fin;
   coge-zumbador;
  fin;
 define-nueva-instruccion b(bb) como
  inicio
   si no-junto-a-zumbador y orientado-al-sur entonces
    inicio
     avanza;
     b(sucede(bb));
    fin
   sino
    inicio
     gira-izquierda;
     gira-izquierda;
     repetir bb veces
         si algun-zumbador-en-la-mochila entonces
          inicio
           avanza;
           deja-zumbador;
          fin;
     gira-izquierda;
     gira-izquierda;
     mientras junto-a-zumbador hacer
      inicio
       mientras izquierda-bloqueada y junto-a-zumbador hacer
        inicio
         coge-zumbador;
         avanza;
        fin;
       si junto-a-zumbador entonces
        inicio
         gira-izquierda;
         avanza;
         a;
         gira-izquierda;
         gira-izquierda;
         avanza;
         gira-izquierda;
         coge-zumbador;
         avanza;
        fin;
      fin;
     gira-izquierda;
     gira-izquierda;
     avanza;
     gira-izquierda;
     gira-izquierda;
     deja-zumbador;
     avanza;
     mientras no-junto-a-zumbador hacer
      inicio
       mientras izquierda-bloqueada hacer
        inicio
         deja-zumbador;
         avanza;
        fin;
       gira-izquierda;
       deja-zumbador;
       avanza;
       a;
       gira-izquierda;
       gira-izquierda;
       avanza;
       gira-izquierda;
       avanza;
      fin;
    fin;
  fin;
    inicia-ejecucion
     deja-zumbador;
     gira-izquierda;
     mientras frente-libre hacer
         avanza;
     si derecha-libre entonces
      inicio
     repetir 3 veces
         gira-izquierda;
     avanza;
     repetir 3 veces
         gira-izquierda;
     mientras frente-libre hacer
         avanza;
     repetir 3 veces
         gira-izquierda;
     avanza;
     gira-izquierda;
     avanza;
     b(0);
      fin
     sino
      inicio
       gira-izquierda;
       gira-izquierda;
       b(0);
      fin;
        apagate;
    termina-ejecucion
finalizar-programa
