iniciar-programa
    define-nueva-instruccion gira-derecha como repetir 3 veces gira-izquierda;
     define-nueva-instruccion media-vuelta como repetir 2 veces gira-izquierda;
    inicia-ejecucion


    si orientado-al-oeste y ningun-zumbador-en-la-mochila y izquierda-bloqueada entonces media-vuelta;
  si orientado-al-sur y ningun-zumbador-en-la-mochila y frente-bloqueado entonces media-vuelta;
 mientras  no-junto-a-zumbador y derecha-libre hacer  inicio  avanza;
         fin;



mientras derecha-bloqueada y frente-libre y no-junto-a-zumbador hacer avanza;
                  mientras junto-a-zumbador hacer coge-zumbador;
mientras frente-libre y izquierda-bloqueada y derecha-libre hacer avanza;
           mientras derecha-bloqueada y orientado-al-norte hacer avanza;
           mientras izquierda-bloqueada y orientado-al-este hacer avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
si izquierda-bloqueada y derecha-libre entonces gira-derecha;
       si derecha-libre y orientado-al-este entonces avanza;
si derecha-bloqueada y izquierda-libre y orientado-al-este y algun-zumbador-en-la-mochila entonces gira-izquierda;
si derecha-libre y orientado-al-norte entonces avanza;
mientras izquierda-bloqueada y frente-libre y no-junto-a-zumbador hacer avanza;
si algun-zumbador-en-la-mochila y izquierda-libre entonces inicio gira-izquierda; avanza; gira-derecha;
mientras frente-libre hacer avanza;
fin;
si frente-bloqueado entonces media-vuelta;
mientras orientado-al-este y ningun-zumbador-en-la-mochila y derecha-bloqueada hacer avanza;
si derecha-libre y ningun-zumbador-en-la-mochila y orientado-al-este entonces gira-derecha;
mientras orientado-al-sur y ningun-zumbador-en-la-mochila y frente-libre hacer avanza;
si frente-bloqueado y orientado-al-sur y ningun-zumbador-en-la-mochila entonces gira-derecha;
mientras frente-libre y orientado-al-oeste y ningun-zumbador-en-la-mochila hacer avanza;
si frente-bloqueado y orientado-al-oeste y ningun-zumbador-en-la-mochila entonces media-vuelta;
  si ningun-zumbador-en-la-mochila entonces inicio
mientras derecha-bloqueada y frente-libre y no-junto-a-zumbador hacer avanza;
                  mientras junto-a-zumbador hacer coge-zumbador;
mientras frente-libre y izquierda-bloqueada y derecha-libre hacer avanza;
           mientras derecha-bloqueada y orientado-al-norte hacer avanza;
           mientras izquierda-bloqueada y orientado-al-este hacer avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
si izquierda-bloqueada y derecha-libre entonces gira-derecha;
       si derecha-libre y orientado-al-este entonces avanza;
si derecha-bloqueada y izquierda-libre y orientado-al-este y algun-zumbador-en-la-mochila entonces gira-izquierda;
si derecha-libre y orientado-al-norte entonces avanza;
mientras izquierda-bloqueada y frente-libre y no-junto-a-zumbador hacer avanza;
si algun-zumbador-en-la-mochila y izquierda-libre entonces inicio gira-izquierda; avanza; gira-derecha;
mientras frente-libre hacer avanza;
fin;
si frente-bloqueado entonces media-vuelta;

fin;





si no-junto-a-zumbador y frente-libre y orientado-al-sur entonces inicio

mientras no junto-a-zumbador y frente-libre hacer inicio
 si no-junto-a-zumbador entonces deja-zumbador; avanza;
 fin;
 si frente-bloqueado y derecha-bloqueada y izquierda-libre entonces inicio deja-zumbador; apagate;
 fin;
 fin;

  si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces inicio deja-zumbador; apagate;
 fin;

 si orientado-al-sur y frente-bloqueado y izquierda-bloqueada entonces inicio
   deja-zumbador; gira-derecha; avanza; gira-derecha;
 fin;
 si frente-bloqueado y orientado-al-norte entonces inicio
  deja-zumbador; gira-izquierda; avanza; gira-izquierda;
 fin;


  si frente-libre y orientado-al-norte entonces inicio si frente-libre entonces
 inicio mientras no-junto-a-zumbador y frente-libre hacer
 inicio mientras no-junto-a-zumbador hacer deja-zumbador; avanza;
 fin;
 fin;
 si frente-bloqueado y izquierda-libre y derecha-libre entonces
 inicio
  deja-zumbador; gira-izquierda; avanza; gira-izquierda;
 fin;
 fin;



 si frente-libre entonces
 inicio mientras no-junto-a-zumbador y frente-libre hacer
 inicio mientras no-junto-a-zumbador hacer deja-zumbador; avanza;
 si frente-bloqueado y derecha-bloqueada y orientado-al-sur entonces inicio  deja-zumbador; apagate;
 fin;
si frente-bloqueado y izquierda-bloqueada y orientado-al-norte entonces inicio  deja-zumbador; apagate;
 fin;
 si frente-bloqueado y orientado-al-sur y derecha-libre entonces inicio deja-zumbador; gira-derecha; avanza; gira-derecha;
 fin;
 fin;
 fin;
 si frente-bloqueado entonces inicio deja-zumbador; gira-izquierda; avanza; gira-izquierda;
 fin;

 si frente-libre y orientado-al-sur entonces
 inicio mientras no-junto-a-zumbador y frente-libre hacer
 inicio mientras no-junto-a-zumbador hacer deja-zumbador; avanza;
 si frente-bloqueado y derecha-bloqueada y orientado-al-sur entonces inicio  deja-zumbador; apagate;
 fin;
si frente-bloqueado y izquierda-bloqueada y orientado-al-norte entonces inicio  deja-zumbador; apagate;
 fin;
 si frente-bloqueado y orientado-al-sur y derecha-libre entonces inicio deja-zumbador; gira-derecha; avanza; gira-derecha;
 fin;
 fin;
 fin;







 apagate;
    termina-ejecucion
finalizar-programa
   