iniciar-programa

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

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

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

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

define-nueva-instruccion retrocede como
inicio
  gira-izquierda;
  gira-izquierda;
  si frente-libre entonces
  avanza;
  gira-izquierda;
  gira-izquierda;


fin;


define-nueva-instruccion ordena como
inicio
  mira-este;
  mientras frente-libre hacer
  inicio
    si junto-a-zumbador entonces
    inicio
      mira-norte;
      mientras junto-a-zumbador hacer avanza;
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
      si junto-a-zumbador entonces
      inicio
      coge-zumbador;
      mira-sur;
      mientras no-junto-a-zumbador hacer avanza;
      retrocede;
      deja-zumbador;
      mira-sur;
        mientras frente-libre hacer
        avanza;
        mira-este;
        avanza;
      fin
      sino
      inicio
        mira-sur;
        mientras frente-libre hacer
        avanza;
        mira-este;
        avanza;
      fin;
    fin
    sino
    inicio
      avanza;
    fin;
  fin;
  mira-oeste;
  mientras frente-libre hacer avanza;
  mira-norte;
fin;

define-nueva-instruccion  erocion como
inicio
mientras frente-libre hacer
inicio
  mira-este;
  mientras no-junto-a-zumbador y frente-libre hacer
  avanza;
  si junto-a-zumbador entonces
  inicio
    mira-norte;
    mientras junto-a-zumbador hacer avanza;
    retrocede;
    retrocede;
    mira-este;
    avanza;
    si junto-a-zumbador entonces
    inicio
     mira-sur;
     mientras frente-libre hacer avanza;
     mira-este;

    fin
    sino
    inicio
      mira-sur;
      mientras frente-libre hacer avanza;
      si junto-a-zumbador entonces
      inicio
      mira-oeste;
      avanza;
      mira-norte;
      mientras junto-a-zumbador hacer avanza;
      retrocede;
      coge-zumbador;
      mira-este;
      avanza;
      mira-sur;
      mientras no-junto-a-zumbador hacer avanza;
      retrocede;
      retrocede;
      deja-zumbador;
      mientras frente-libre hacer avanza;
      mira-este;

      fin
      sino
      inicio
      mira-este;
      si frente-libre entonces
      avanza;
      fin;
    fin;
 fin;
fin;
mira-oeste;
mientras frente-libre hacer avanza;
ordena;
fin;



    inicia-ejecucion
    mientras algun-zumbador-en-la-mochila hacer
    inicio
      mira-norte;
      avanza;
      deja-zumbador;
      retrocede;
      erocion;
    fin;
    mira-norte;
    avanza;
    mientras junto-a-zumbador hacer
    coge-zumbador;
    retrocede;
        apagate;
    termina-ejecucion
finalizar-programa
