   iniciar-programa
   define-nueva-instruccion cero como inicio
     si derecha-bloqueada y izquierda-bloqueada entonces inicio
       apagate;


     fin;
   fin;
   define-nueva-instruccion diez como inicio
   si derecha-bloqueada y izquierda-bloqueada y orientado-al-norte entonces inicio
   mientras frente-libre  hacer inicio
   avanza;
   mientras junto-a-zumbador hacer coge-zumbador;
   mientras algun-zumbador-en-la-mochila hacer inicio
      repetir 2 veces gira-izquierda;
   mientras frente-libre hacer avanza;
   repetir 2 veces gira-izquierda;
   mientras frente-libre y algun-zumbador-en-la-mochila  hacer inicio
    deja-zumbador;
    avanza;
    si ningun-zumbador-en-la-mochila entonces apagate;
   fin;

   fin;
   fin;
   mientras junto-a-zumbador hacer coge-zumbador;
   repetir 2 veces gira-izquierda;
   mientras frente-libre hacer avanza;
   repetir 2 veces gira-izquierda;
   mientras frente-libre y algun-zumbador-en-la-mochila  hacer inicio
    deja-zumbador;
    avanza;

   fin;

   fin;



   fin;
    inicia-ejecucion
    si derecha-bloqueada y izquierda-bloqueada entonces inicio

    diez;

    fin
    sino inicio

 mientras orientado-al-norte hacer inicio


mientras frente-libre   hacer   inicio


  si frente-libre entonces avanza;
  si junto-a-zumbador entonces coge-zumbador;
fin;

repetir 2 veces gira-izquierda;
mientras frente-libre hacer avanza;
repetir 2 veces gira-izquierda;
si junto-a-zumbador entonces inicio
  mientras junto-a-zumbador hacer avanza;
  si algun-zumbador-en-la-mochila entonces inicio
  deja-zumbador;
  (*dejando zumbadores a las esquinas*)

  repetir 2 veces gira-izquierda;
  mientras frente-libre hacer avanza;
  gira-izquierda;
  mientras frente-libre hacer avanza;
  mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
  repetir 2 veces gira-izquierda;
  avanza;
  mientras no-junto-a-zumbador hacer avanza;
  repetir 3 veces gira-izquierda;
  mientras junto-a-zumbador hacer avanza;
  fin
  sino inicio
    repetir 2 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    si frente-libre entonces avanza;
    gira-izquierda;


    (*recoger los zumbadores*)

    si derecha-bloqueada entonces inicio
       mientras junto-a-zumbador hacer coge-zumbador;
      gira-izquierda;
      mientras frente-libre hacer avanza;
      repetir 3 veces gira-izquierda;
      mientras frente-libre hacer avanza;
      mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
      repetir 3 veces gira-izquierda;
      mientras frente-libre hacer avanza;
      repetir 3 veces gira-izquierda;
      mientras frente-libre hacer avanza;
      repetir 2 veces gira-izquierda;
      (*el ultimo*)

      mientras orientado-al-norte hacer inicio
        mientras frente-libre hacer inicio
        si frente-libre entonces avanza;
        si junto-a-zumbador entonces coge-zumbador;
        fin;
        si frente-bloqueado y orientado-al-norte entonces repetir 2 veces gira-izquierda;
        mientras frente-libre hacer avanza;
         repetir 2 veces gira-izquierda;
         si junto-a-zumbador entonces inicio
           mientras junto-a-zumbador hacer avanza;
            si algun-zumbador-en-la-mochila  entonces inicio
            deja-zumbador;
           avanza;
           (**)
           mientras frente-libre hacer avanza;
           gira-izquierda;
           avanza;
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           repetir 2 veces gira-izquierda;
           avanza;
           repetir 3 veces gira-izquierda;
           mientras frente-libre hacer avanza;
           repetir 2 veces gira-izquierda;
           mientras junto-a-zumbador hacer avanza;







           fin
           sino inicio
            apagate;
           fin;


         fin
         sino inicio

          si algun-zumbador-en-la-mochila entonces inicio
          deja-zumbador;

           (*dejando el ultimo zumbador*)
           mientras frente-libre hacer avanza;
           gira-izquierda;
           avanza;
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           repetir 2 veces gira-izquierda;
           avanza;
           repetir 3 veces gira-izquierda;
           mientras frente-libre hacer avanza;
           repetir 2 veces gira-izquierda;
           avanza;
           fin
           sino inicio
            apagate;
           fin;

         fin;

      fin;

    fin;



  fin;








fin
sino inicio
 si algun-zumbador-en-la-mochila entonces inicio
 deja-zumbador;
 (* dejando zumbadores a las esquinas*)

 repetir 3 veces gira-izquierda;
 mientras frente-libre hacer avanza;
 mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
 repetir 2 veces gira-izquierda;
 si frente-libre entonces avanza;
 mientras no-junto-a-zumbador hacer avanza;
 repetir 3 veces gira-izquierda;





 (*codigo real*)

 avanza;
 fin
 sino inicio
   repetir 3 veces gira-izquierda;
   si frente-libre entonces avanza;
   gira-izquierda;
   (*copia*)







    (*recoger los zumbadores*)

    si derecha-bloqueada entonces inicio
       mientras junto-a-zumbador hacer coge-zumbador;
      gira-izquierda;
      mientras frente-libre hacer avanza;
      repetir 3 veces gira-izquierda;
      mientras frente-libre hacer avanza;
      mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
      repetir 3 veces gira-izquierda;
      mientras frente-libre hacer avanza;
      repetir 3 veces gira-izquierda;
      mientras frente-libre hacer avanza;
      repetir 2 veces gira-izquierda;
      (*el ultimo*)

      mientras orientado-al-norte hacer inicio
        mientras frente-libre hacer inicio
        si frente-libre entonces avanza;
        si junto-a-zumbador entonces coge-zumbador;
        fin;
        si frente-bloqueado y orientado-al-norte entonces repetir 2 veces gira-izquierda;
        mientras frente-libre hacer avanza;
         repetir 2 veces gira-izquierda;
         si junto-a-zumbador entonces inicio
           mientras junto-a-zumbador hacer avanza;
            si algun-zumbador-en-la-mochila  entonces inicio
            deja-zumbador;
           avanza;
           (**)
           mientras frente-libre hacer avanza;
           gira-izquierda;
           avanza;
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           repetir 2 veces gira-izquierda;
           avanza;
           repetir 3 veces gira-izquierda;
           mientras frente-libre hacer avanza;
           repetir 2 veces gira-izquierda;
           mientras junto-a-zumbador hacer avanza;







           fin
           sino inicio
            apagate;
           fin;


         fin
         sino inicio

          si algun-zumbador-en-la-mochila entonces inicio
          deja-zumbador;

           (*dejando el ultimo zumbador*)
           mientras frente-libre hacer avanza;
           gira-izquierda;
           avanza;
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           repetir 2 veces gira-izquierda;
           avanza;
           repetir 3 veces gira-izquierda;
           mientras frente-libre hacer avanza;
           repetir 2 veces gira-izquierda;
           avanza;
           fin
           sino inicio
            apagate;
           fin;

         fin;

      fin;
      fin;



























  (**)
 fin;
fin;
fin;
fin;





        apagate;
    termina-ejecucion
finalizar-programa
