iniciar-programa
define-nueva-instruccion gira (h) como inicio
repetir h veces gira-izquierda;
fin;



define-nueva-instruccion compara (k) como inicio
 si junto-a-zumbador y no si-es-cero (k) entonces inicio
  coge-zumbador;
   compara (precede(k));
    si orientado-al-este entonces deja-zumbador;
    fin
    sino inicio
    si no si-es-cero (k) o junto-a-zumbador entonces gira (2);

 fin;
fin;



define-nueva-instruccion iguales (k) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   iguales (sucede(k));
   fin
   sino inicio
   si frente-libre entonces avanza;

    mientras orientado-al-oeste hacer inicio
     compara (k);
      mientras no-orientado-al-oeste hacer gira-izquierda;
       si frente-libre entonces  inicio
       avanza;
       mientras no-junto-a-zumbador y frente-libre hacer avanza;
       fin
       sino inicio
      gira (3);
     avanza;
    fin;

   fin;

 fin;
fin;



define-nueva-instruccion lleva como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   lleva;
    deja-zumbador;
    fin
    sino inicio
    avanza;
 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 (2);

    si no-junto-a-zumbador entonces apagate;


    mientras frente-libre y junto-a-zumbador hacer inicio
      mientras junto-a-zumbador hacer inicio
       mientras junto-a-zumbador hacer coge-zumbador;
       si frente-libre entonces avanza;
       fin;

       gira (2);
       mientras frente-libre hacer avanza;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       gira-izquierda;
      si frente-libre entonces inicio
      avanza;
      gira-izquierda;
      fin;
    fin;

    mientras no-orientado-al-oeste hacer gira-izquierda;
    si no-junto-a-zumbador entonces avanza;




    mientras junto-a-zumbador hacer inicio
    iguales (0);
    deja-zumbador;
    gira (3);
    avanza;
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    gira (3);
    avanza;
    gira (3);
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    gira (3);
    avanza;
    gira (2);
    si algun-zumbador-en-la-mochila y derecha-libre entonces deja-zumbador;
    avanza;
    gira (3);

    fin;

    gira (3);
    avanza;
    gira (2);
    lleva;
   





        apagate;
    termina-ejecucion
finalizar-programa
