iniciar-programa
define-nueva-instruccion g(n) como repetir n veces gira-izquierda;
define-nueva-instruccion recoge como inicio
 mientras junto-a-zumbador hacer coge-zumbador;
 avanza;
 si no-junto-a-zumbador entonces inicio
   g(2);
   mientras frente-libre hacer avanza;
   g(1);
   si frente-libre entonces avanza;
   g(1);
   si junto-a-zumbador entonces recoge;

 fin;
si derecha-libre entonces recoge;
mientras algun-zumbador-en-la-mochila y derecha-bloqueada hacer deja-zumbador;

fin;
define-nueva-instruccion balanza como inicio



    si junto-a-zumbador entonces inicio
      coge-zumbador;
        g(2);
         avanza;
           deja-zumbador;
             repetir 2 veces avanza;


              si junto-a-zumbador entonces inicio
                 coge-zumbador;
                 si no junto-a-zumbador entonces sal-de-instruccion;
                   si junto-a-zumbador entonces g(2);
                   si junto-a-zumbador entonces repetir 2 veces avanza;
                     deja-zumbador;
                    si frente-libre entonces avanza;
              fin;
    fin;

      si frente-bloqueado y junto-a-zumbador entonces balanza;









fin;
define-nueva-instruccion separa como inicio
  mientras junto-a-zumbador hacer coge-zumbador;
    g(2);
      repetir 2 veces avanza;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       mientras junto-a-zumbador hacer inicio
       si orientado-al-oeste y junto-a-zumbador entonces inicio
         coge-zumbador;
         avanza;
         deja-zumbador;
         g(2);avanza;
       fin;

         si orientado-al-este y junto-a-zumbador entonces inicio
         coge-zumbador;
         avanza;
         avanza;
         deja-zumbador;
         g(2);
         avanza;
         avanza;
       fin;
      fin;
fin;
    inicia-ejecucion
    mientras derecha-libre hacer avanza;
    avanza;
     g(3);
     avanza;
     g(3);
     avanza;
     g(2);
     recoge;
     avanza;
     g(3);
     repetir 3 veces avanza;
     g(3);
     avanza;
     g(2);
     recoge;
      mientras junto-a-zumbador hacer coge-zumbador;
      avanza;
      g(1);
     repetir 9 veces avanza;
     g(1);
     avanza;
     mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
     g(3);
     si junto-a-zumbador y frente-bloqueado entonces inicio
     g(2);
     mientras frente-libre hacer avanza;
      si junto-a-zumbador entonces inicio
      g(2);
       mientras frente-libre hacer avanza;
       balanza;
      fin;
      si no junto-a-zumbador y orientado-al-este y frente-bloqueado y ningun-zumbador-en-la-mochila entonces inicio
      g(2);
      mientras frente-libre hacer avanza;
      mientras junto-a-zumbador hacer coge-zumbador;
      g(2);
       mientras frente-libre hacer avanza;
        mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
        separa;
      fin;
     fin;

     si orientado-al-oeste y no-junto-a-zumbador y frente-bloqueado entonces inicio
       g(2);
       avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
       g(1);
       avanza;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       g(2);
       avanza;
       g(1);
       repetir 2 veces avanza;
     fin;

           si orientado-al-este y no-junto-a-zumbador y frente-bloqueado entonces inicio
       g(2);
        repetir 2 veces avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
       g(3);
       avanza;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       g(2);
       avanza;
       g(3);
        avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
       g(2);
       mientras frente-libre hacer avanza;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
     fin;
       si junto-a-zumbador entonces separa;
       si no junto-a-zumbador y orientado-al-oeste entonces inicio
      mientras frente-libre hacer avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
       g(3);
       avanza;
       g(1);
       avanza;
       g(1);
       mientras frente-libre hacer avanza;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       fin;
        apagate;
    termina-ejecucion
finalizar-programa
