iniciar-programa
define-nueva-instruccion norte como mientras no orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no orientado-al-oeste hacer gira-izquierda;

define-nueva-instruccion ir11 como
  inicio
   sur;
   mientras frente-libre hacer avanza;
   oeste;
   mientras frente-libre hacer avanza;
   norte;
  fin;


define-nueva-instruccion irfila como
  inicio
    este;
    repetir 2 veces avanza;
  fin;


define-nueva-instruccion mover como
  inicio
    mientras junto-a-zumbador hacer coge-zumbador;
    este;
    avanza;
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
  fin;


define-nueva-instruccion despa como
  inicio
    mientras junto-a-zumbador hacer coge-zumbador;
    norte;
    mientras algun-zumbador-en-la-mochila hacer
      inicio
        deja-zumbador;
        si frente-libre entonces avanza;
      fin;
    sur;
    mientras frente-libre hacer avanza;
    este;
    avanza;
  fin;


define-nueva-instruccion sube como
   inicio
   norte;
    mientras junto-a-zumbador hacer
      inicio
        coge-zumbador;
        si frente-libre entonces avanza
        sino sur;
      fin;
      si no orientado-al-sur entonces
        inicio
          sur;
          avanza;
        fin;
    este;
    mientras frente-libre hacer avanza;
    oeste;
    mientras junto-a-zumbador hacer avanza;
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
   fin;


define-nueva-instruccion acomoda como
  inicio
     si junto-a-zumbador entonces
       inicio
         mientras junto-a-zumbador hacer coge-zumbador;
         ir11;
         irfila;
         mientras junto-a-zumbador y frente-libre hacer avanza;
         mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       fin;
     ir11;
     este;
     avanza;
  fin;

define-nueva-instruccion buska como
  inicio
    mientras no orientado-al-sur hacer
      inicio
        este;
        mientras no junto-a-zumbador y frente-libre hacer
          inicio
           avanza;
          fin;
        si junto-a-zumbador entonces
          inicio
            sur;
          fin
        sino
          inicio
            oeste;
            repetir 30 veces avanza;
            norte;
            si frente-libre entonces
              inicio
                avanza;
                este;
              fin
            sino sur;
          fin;
      fin;
  fin;

    inicia-ejecucion
          mover;
          ir11;
          irfila;
          mientras junto-a-zumbador hacer despa;
          ir11;
          irfila;
          mientras junto-a-zumbador hacer
            inicio
              sube;
              ir11;
              irfila;
              repetir 30 veces si no junto-a-zumbador entonces avanza;
            fin;
          ir11;
          este;
          avanza;
          mientras junto-a-zumbador hacer
            inicio
              coge-zumbador;
              norte;
              avanza;
              deja-zumbador;
              ir11;
              este;
              repetir 69 veces avanza;
              buska;
              acomoda;
            fin;
        apagate;
    termina-ejecucion
finalizar-programa
