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





define-nueva-instruccion bp como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 si junto-a-zumbador entonces coge-zumbador;
  si junto-a-zumbador entonces repetir 2 veces deja-zumbador;
  repetir 4 veces inicio
   si frente-libre entonces inicio
    avanza;
     bp;
      repetir 2 veces gira-izquierda;
      avanza;
      repetir 2 veces gira-izquierda;
     fin;
    gira-izquierda;
   fin;
 fin;

fin;




define-nueva-instruccion lugar2 (k) como inicio
 si frente-libre entonces inicio
 avanza;
  lugar2 (k);
   avanza;
    fin
     sino inicio
     mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
     gira-izquierda;
     repetir k veces avanza;
     gira-izquierda;
 fin;
fin;




define-nueva-instruccion lugar (k) como inicio
 si frente-libre entonces inicio
  avanza;
 lugar (sucede(k));
   fin
   sino inicio
    gira-izquierda;
   lugar2 (k);

 fin;
fin;





define-nueva-instruccion resta (n) como inicio
 si algun-zumbador-en-la-mochila entonces inicio
  deja-zumbador;
   resta (sucede(n));
    fin
     sino inicio
      repetir n veces inicio
     repetir 2 veces coge-zumbador;
     fin;


 fin;
fin;



define-nueva-instruccion toma (p) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   toma (sucede(p));
    fin
     sino inicio
     repetir p veces inicio
     repetir 2 veces deja-zumbador;
     fin;
    resta (0);
    repetir p veces coge-zumbador;
 fin;
fin;



    inicia-ejecucion

    mientras no-orientado-al-oeste hacer gira-izquierda;
   lugar (0);
    bp;
      mientras no-orientado-al-oeste hacer gira-izquierda;
       mientras frente-libre hacer avanza;
        gira-izquierda;
         mientras frente-libre hacer avanza;
         toma (0);



        apagate;
    termina-ejecucion
finalizar-programa
