iniciar-programa
define-nueva-instruccion gira-derecha como inicio
repetir 3 veces gira-izquierda;
fin;
define-nueva-instruccion forma-filas como inicio
mientras junto-a-zumbador hacer inicio
coge-zumbador;
fin;
mientras algun-zumbador-en-la-mochila hacer inicio
repetir 2 veces deja-zumbador;
si frente-libre entonces inicio
avanza;
fin;
fin;
gira-izquierda;
avanza;
gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
repetir 2 veces gira-izquierda;
mientras junto-a-zumbador hacer inicio                    
coge-zumbador;
fin;
mientras algun-zumbador-en-la-mochila hacer inicio
deja-zumbador;
si frente-libre entonces inicio
avanza;
fin;
fin;
apagate;
fin;
define-nueva-instruccion posisiona como inicio (*Mujer*)
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
si frente-bloqueado entonces inicio
repetir 2 veces gira-izquierda;
avanza;
gira-izquierda;
fin;
mientras algun-zumbador-en-la-mochila hacer inicio
deja-zumbador;
fin;
forma-filas;
fin;
define-nueva-instruccion verifica(x) como (*Mujer*)
inicio
      si junto-a-zumbador entonces inicio
      coge-zumbador;
      verifica(precede(x));
      fin;
      si si-es-cero(x) entonces
      inicio

      fin;
fin;
define-nueva-instruccion encuentra como inicio (*Mujer*)
mientras orientado-al-norte hacer inicio
si junto-a-zumbador entonces inicio
verifica(1);
fin;
si frente-libre entonces inicio
avanza;
fin;
si junto-a-zumbador entonces inicio
verifica(1);
fin;
si frente-bloqueado y orientado-al-norte entonces inicio
repetir 2 veces gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
si frente-bloqueado y orientado-al-sur entonces inicio
si frente-bloqueado y izquierda-bloqueada entonces inicio
posisiona;
fin;
fin;
si frente-bloqueado entonces inicio
gira-izquierda;
avanza;
gira-izquierda;
fin;
fin;
fin;
fin;
define-nueva-instruccion deposita como inicio (*Hombre*)
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
si frente-bloqueado entonces inicio
gira-derecha;
fin;
mientras algun-zumbador-en-la-mochila hacer inicio
deja-zumbador;
fin;
avanza;
encuentra;
fin;
define-nueva-instruccion identifica(x) como (*Hombre*)
inicio
      si junto-a-zumbador entonces inicio
      coge-zumbador;
      identifica(precede(x));
      fin;
      si si-es-cero(x) entonces
      inicio
      repetir 2 veces deja-zumbador;
      fin;

fin;
define-nueva-instruccion busca como inicio (*Hombre*)
mientras orientado-al-norte hacer inicio
si junto-a-zumbador entonces inicio
identifica(2);
fin;
si frente-libre entonces inicio
si junto-a-zumbador entonces inicio
identifica(2);                                    
fin;
avanza;
fin;
si frente-bloqueado y orientado-al-norte entonces inicio
si junto-a-zumbador entonces inicio
identifica(2);
fin;
repetir 2 veces gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
si frente-bloqueado y orientado-al-sur entonces inicio
si frente-bloqueado y izquierda-bloqueada entonces inicio
deposita;
fin;
fin;
si frente-bloqueado entonces inicio
gira-izquierda;
avanza;
gira-izquierda;
fin;
fin;
fin;
fin;
inicia-ejecucion
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
mientras no-orientado-al-sur hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
mientras no-orientado-al-norte hacer inicio
gira-izquierda;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
gira-derecha;
avanza;
repetir 2 veces deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
gira-derecha;
fin;
si no-junto-a-zumbador entonces inicio
si algun-zumbador-en-la-mochila entonces inicio
deja-zumbador;
fin;
fin;
busca;
      apagate;
    termina-ejecucion
finalizar-programa
