iniciar-programa
define-nueva-instruccion sur como inicio
mientras no-orientado-al-sur hacer gira-izquierda; fin;

define-nueva-instruccion este como inicio
mientras no-orientado-al-este hacer gira-izquierda; fin;

define-nueva-instruccion norte como inicio
mientras no-orientado-al-norte hacer gira-izquierda; fin;

define-nueva-instruccion oeste como inicio
mientras no-orientado-al-oeste hacer gira-izquierda; fin;

define-nueva-instruccion eskina(a) como inicio

mientras junto-a-zumbador y frente-libre  hacer
             coge-zumbador;
si frente-libre entonces inicio
oeste;
mientras frente-libre hacer avanza;
sur;
mientras frente-libre hacer avanza;   fin;
   si no si-es-cero(a) entonces inicio deja-zumbador;
   eskina(precede(precede(a)));  fin;

fin;

define-nueva-instruccion dejar como inicio
norte;
avanza;
este;
avanza;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
sur;
fin;

 define-nueva-instruccion dejar2 como inicio
 oeste;
 mientras frente-libre hacer avanza;
 norte;
 avanza;
 oeste;
 avanza;
 mientras algun-zumbador-en-la-mochila hacer deja-zumbador;

 fin;


define-nueva-instruccion izquierda como inicio
mientras junto-a-zumbador hacer
 inicio
     coge-zumbador;
 fin;

 si frente-libre entonces inicio avanza; fin sino inicio dejar; fin;
  si junto-a-zumbador y no-orientado-al-sur entonces
     inicio
       izquierda;
     fin
     sino
     inicio
       sur;
       mientras frente-libre hacer avanzA;

       este;
       si frente-libre entonces inicio avanza; norte; fin;

     fin;
     si orientado-al-este entonces sal-de-instruccion;
    izquierda;
 fin;

 define-nueva-instruccion compara como
inicio
      si junto-a-zumbador entonces
     inicio
         coge-zumbador;
         compara;
         si junto-a-zumbador entonces
           coge-zumbador;
      fin
      sino
       inicio
         mientras algun-zumbador-en-la-mochila  hacer
         deja-zumbador;
         avanza;
       fin;
fin;

   define-nueva-instruccion resolver(a) como inicio
   si junto-a-zumbador entonces
      inicio
       coge-zumbador;
       resolver(sucede(a));
      fin
      sino
      inicio
         eskina(a);
      fin;

  fin;


  inicia-ejecucion
     norte;
     repetir 5 veces avanza;
     este;
     avanza;
     sur;
     avanza;
     este;
     norte;

     mientras derecha-libre hacer
     inicio
       izquierda;
      fin;

      dejar;
      este;
      avanza; avanza;
      sur;
      avanza;
      norte;
      izquierda;

      dejar2;

      compara;
      si junto-a-zumbador entonces
      inicio
         mientras algun-zumbador-en-la-mochila hacer
         deja-zumbador;
      fin
       sino
         inicio
           mientras algun-zumbador-en-la-mochila hacer
             deja-zumbador;
             gira-izquierda;
             gira-izquierda;
             avanza;
         fin;

      si orientado-al-oeste entonces
         inicio
           este;
           avanza;
           oeste;
         fin
         sino

         inicio
           oeste;
           avanza;
           este;
           compara;
           resolver(0);
           apagate;
         fin;

     compara;
    resolver(0);
        apagate;
    termina-ejecucion
finalizar-programa
