iniciar-programa
define-nueva-instruccion gira(e) como repetir e veces gira-izquierda;
define-nueva-instruccion checa(a) como inicio
si no si-es-cero (a) y no junto-a-zumbador entonces sal-de-instruccion;
si si-es-cero (a) entonces inicio
gira(2);
sal-de-instruccion;
fin;
 si junto-a-zumbador entonces inicio
coge-zumbador;
checa(precede(a));
 fin;
si no si-es-cero(a) y orientado-al-este entonces deja-zumbador;

fin;
 define-nueva-instruccion compara(a) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
  compara(sucede(a));


 fin sino inicio
 repetir a veces deja-zumbador;
 avanza;
 checa(a);
 si orientado-al-este entonces inicio
 gira(2);
 avanza;
 gira(2);
  coge-zumbador;
  avanza;
  deja-zumbador;
  gira(2);
  avanza;
  gira(2);

  compara(0);
  fin;
 fin;

  FIN;


define-nueva-instruccion dejaDos(x) como inicio
gira(1);
avanza;
gira(1);
mientras frente-libre hacer avanza;
gira(1);
mientras frente-libre hacer avanza;
gira(2);
avanza;
gira(3);
avanza;
repetir x veces deja-zumbador;
gira(2);
avanza;
gira(2);
compara(0);
FIN;
define-nueva-instruccion  contra(x) como inicio
   si no junto-a-zumbador entonces avanza;
 si no junto-a-zumbador entonces inicio
  gira(2);
  mientras frente-libre hacer avanza;
  gira(1);
  si frente-libre entonces avanza sino inicio
   dejaDos(x);
   sal-de-instruccion;
  fin;
  gira(1);
  contra(x);
 fin;
 si junto-a-zumbador entonces inicio
 coge-zumbador;
  contra(sucede(x));
 fin;
FIN;
define-nueva-instruccion deja(n) como inicio
gira(1);
avanza;
gira(1);
mientras frente-libre hacer avanza;
gira(1);
mientras frente-libre hacer avanza;
gira(2);
avanza;
repetir n veces deja-zumbador;
repetir 4 veces avanza;
gira(3);
repetir 7 veces avanza;
gira(3);
avanza;
gira(2);
 contra(0);
FIN;
 define-nueva-instruccion resta(n) como inicio

si junto-a-zumbador entonces inicio
coge-zumbador;
resta(precede(n));
fin sino inicio
 gira(3);
 avanza;
 repetir n veces deja-zumbador;
 apagate;

fin;

 FIN;
 define-nueva-instruccion bal(n) como inicio
 si no junto-a-zumbador entonces avanza;
 si no junto-a-zumbador entonces inicio
  gira(2);
  mientras frente-libre hacer avanza;
  gira(1);
  si frente-libre entonces avanza sino inicio
   deja(n);
   avanza;
   gira(2);
   resta(n);
   sal-de-instruccion;
  fin;
  gira(1);
  bal(n);
 fin;
 si junto-a-zumbador entonces inicio
 coge-zumbador;
  bal(sucede(n));
 fin;
 FIN;

    inicia-ejecucion
    repetir 5 veces avanza;
    gira(3);
    avanza;
    gira(3);
    avanza;
    gira(2);
    bal(0);
    resta(0);
        apagate;
    termina-ejecucion
finalizar-programa
