iniciar-programa
define-nueva-instruccion g(l) como repetir l veces gira-izquierda;
define-nueva-instruccion lol(n) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  lol(sucede(n));
 fin
 sino inicio
 g(2);
 repetir n veces
 avanza;
 g(3);
 avanza;
 g(3);
 avanza;
 avanza;
 fin;
 fin;
 define-nueva-instruccion lleva(n) como inicio
  si junto-a-zumbador entonces inicio
   coge-zumbador;
   lleva(sucede(n));
  fin
  sino inicio
   g(3);
   avanza;
   repetir n veces deja-zumbador;
   g(2);
   avanza;
   g(3);
   si frente-libre entonces avanza;
  fin;
 fin;
 define-nueva-instruccion mueve(n) como inicio
 repetir n veces inicio
  lleva(0);
  fin;
 fin;
define-nueva-instruccion colados(m)  como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  colados(sucede(m));
 fin
 sino inicio
 avanza;
 lol(0);
 mueve(m);
 fin;
 fin;
 define-nueva-instruccion real como inicio
  si junto-a-zumbador entonces inicio
  coge-zumbador;
  real;
  deja-zumbador;
  fin
  sino inicio
  si frente-libre entonces
  avanza;
  si junto-a-zumbador entonces inicio
  real;
  avanza; (*le quiteav*)
  fin
  sino
  si no-junto-a-zumbador entonces inicio
   mientras no-junto-a-zumbador y frente-libre hacer avanza;
   g(2);
   si junto-a-zumbador entonces
   avanza;
  fin;
  fin;
 fin;
define-nueva-instruccion re como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  re;
  deja-zumbador;
 fin
 sino inicio
 si no-junto-a-zumbador entonces inicio
 si frente-libre entonces avanza;
 si junto-a-zumbador entonces inicio
 re;
 avanza;
 fin
 sino
 si no-junto-a-zumbador entonces inicio
  mientras frente-libre hacer avanza;
  g(1);
  avanza;
  g(1);
  mientras junto-a-zumbador y frente-libre hacer avanza;
 fin;
 fin;
 fin;
fin;
    inicia-ejecucion
mientras no orientado-al-norte hacer gira-izquierda;
avanza;
g(3);
avanza;
g(2);
colados(0);
g(2);
avanza;
mientras frente-libre y no-junto-a-zumbador hacer avanza;
mientras junto-a-zumbador y frente-libre hacer avanza;
g(2);
si no-junto-a-zumbador entonces avanza;
real;
g(2);
mientras frente-libre hacer avanza;
g(3);
avanza;
g(3);
mientras no-junto-a-zumbador hacer
avanza;
mientras junto-a-zumbador hacer avanza;
g(2);
si no-junto-a-zumbador entonces avanza;
re;
        apagate;
    termina-ejecucion
finalizar-programa
