iniciar-programa
define-nueva-instruccion gira(e) como repetir e veces gira-izquierda;
define-nueva-instruccion vuelve como inicio
 gira(2);
 mientras frente-libre hacer avanza;
 gira(1);
 si frente-libre entonces avanza;
 gira(1);
FIN;
  define-nueva-instruccion sal como inicio
 gira(2);
 mientras frente-libre hacer avanza;
 gira(3);
 mientras izquierda-bloqueada hacer avanza;
 gira(3);
avanza;
mientras derecha-bloqueada hacer avanza;
avanza;
 gira(3);
 avanza;
 gira(1);

 fin;
define-nueva-instruccion segundo(x) como inicio
si frente-bloqueado y derecha-bloqueada entonces inicio
 gira(2);
 mientras frente-libre hacer avanza;
 gira(3);
 mientras frente-libre hacer avanza;
 gira(1);
 mientras frente-libre hacer avanza;
 gira(1); avanza;
 gira(1);
 repetir x veces inicio
 deja-zumbador;
 si frente-libre entonces avanza;
 si frente-bloqueado entonces inicio
 gira(3);
 avanza;
 fin;
 fin;
 sal-de-instruccion;
fin;
 si frente-libre  entonces inicio
   avanza;
  segundo(sucede(x));
 fin;
    si frente-bloqueado y derecha-libre entonces inicio
vuelve;
segundo(sucede(x));
fin;


FIN;

define-nueva-instruccion mayoruno como inicio
mientras frente-libre hacer inicio
 si junto-a-zumbador entonces coge-zumbador;
 si frente-libre entonces avanza;

fin;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;

apagate;

FIN;


 define-nueva-instruccion mayordos como inicio
  mientras junto-a-zumbador y frente-libre hacer inicio
  coge-zumbador;
  avanza;
  si frente-bloqueado entonces inicio
  si junto-a-zumbador entonces coge-zumbador;
   gira(3);
   avanza;
  mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
  coge-zumbador;
  apagate;
  fin;


   fin;

 FIN;
 define-nueva-instruccion  compara como inicio
 gira(2);
 mientras frente-libre hacer avanza;
 gira(2);
 mientras junto-a-zumbador y frente-libre hacer avanza;
 gira(3);
 avanza;
 si no junto-a-zumbador entonces inicio
 mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
 gira(2);
 avanza;
 gira(1);
 mayoruno;

 fin sino inicio
  mientras junto-a-zumbador hacer avanza;
 mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
 si izquierda-libre entonces inicio
 gira(2);
 avanza;
 gira(3);
 mientras junto-a-zumbador hacer avanza;
gira(2);
avanza;
  mayordos;
fin sino inicio

mientras junto-a-zumbador hacer avanza;
gira(2);
mientras junto-a-zumbador hacer inicio
 si junto-a-zumbador entonces coge-zumbador;
 si frente-libre entonces avanza;
 si frente-bloqueado entonces inicio
  gira(2);
  avanza;
  gira(3);
  mayordos;
  fin;
 fin;
fin;
 fin;

 FIN;

define-nueva-instruccion primer(n) como inicio
si frente-bloqueado y derecha-libre entonces inicio
vuelve;
primer(sucede(n));
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
sal;
segundo(1);
gira(1);
mientras frente-libre hacer avanza;
gira(1);
mientras frente-libre hacer avanza;
gira(2);
repetir n veces inicio
 deja-zumbador;
 si frente-libre entonces avanza;
fin;
compara;
fin;
 si frente-libre  entonces inicio
   avanza;
   primer(sucede(n));
 fin;


FIN;
    inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
    mientras no junto-a-zumbador hacer avanza;
    repetir 250 veces coge-zumbador;
   gira(2);
   avanza;
   gira(3);
   mientras frente-libre hacer avanza;
   gira(1);
   mientras derecha-bloqueada y frente-libre hacer avanza;
   gira(3);
 si frente-libre entonces  avanza;
   gira(3);
  si frente-libre entonces avanza;
  gira(1);
   primer(1);
        apagate;
    termina-ejecucion
finalizar-programa
