iniciar-programa
define-nueva-instruccion gira(n) como inicio
repetir n veces gira-izquierda;
fin;

define-nueva-instruccion emp como inicio
 gira(2);
 mientras frente-libre hacer
  avanza;
 gira(2);
 mientras no junto-a-zumbador hacer
  avanza;
fin;


define-nueva-instruccion deja(n) como inicio
 si algun-zumbador-en-la-mochila entonces inicio
  deja-zumbador;
 deja(precede(n));
 coge-zumbador;
 fin;
fin;

define-nueva-instruccion falta como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 falta;
 deja-zumbador;
 fin sino inicio
   mientras frente-libre hacer avanza;
   si izquierda-libre entonces    inicio
     gira-izquierda;
     avanza;
     gira-izquierda;
     mientras junto-a-zumbador hacer
     avanza;
     gira(2);
     avanza;
     falta;
   fin sino inicio
     gira(3);
     mientras frente-libre y junto-a-zumbador hacer
     avanza;
     si no junto-a-zumbador entonces inicio
     gira(2);
     avanza;
     gira(2);
     fin;
     mientras junto-a-zumbador hacer
     coge-zumbador;
  fin;
 fin;
fin;

define-nueva-instruccion sobra(n) como inicio
gira(2);
 mientras frente-libre hacer
  avanza;
 gira(2);
 mientras no junto-a-zumbador hacer
 avanza;
 mientras junto-a-zumbador  hacer
  coge-zumbador;
 mientras frente-libre hacer
  avanza;
 gira-izquierda;
 mientras derecha-bloqueada hacer
  avanza;
 repetir 3 veces gira-izquierda;
 avanza;
 repetir n veces deja-zumbador;
fin;


define-nueva-instruccion toma(n) como inicio
si no si-es-cero (n) entonces inicio
 si junto-a-zumbador entonces   inicio
  coge-zumbador;
 toma(precede(n));
 fin  sino inicio
  si no junto-a-zumbador entonces
  deja-zumbador;
  mientras frente-libre hacer
   avanza;
   gira(1);
   si frente-libre entonces inicio
   avanza;
   gira(1);
     mientras junto-a-zumbador hacer
      avanza;
     gira(2);
     avanza;
     toma(n);
    fin sino inicio
     sobra(n);
    fin;

  fin;

  fin sino inicio
si izquierda-libre o junto-a-zumbador  entonces
falta;
fin;
fin;

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



define-nueva-instruccion conteo(n) como inicio

si algun-zumbador-en-la-mochila  entonces inicio
deja-zumbador;
conteo(sucede(n));
fin sino inicio
  si frente-libre entonces inicio
avanza;
gira-izquierda;
  mientras  junto-a-zumbador hacer
  avanza;
  gira(2);
  avanza;
  toma(n);
  fin;
fin;
fin;
    inicia-ejecucion
    conteo(0);
        apagate;
    termina-ejecucion
finalizar-programa
