iniciar-programa
define-nueva-instruccion gira(l) como repetir l veces gira-izquierda;
define-nueva-instruccion ja como inicio
si frente-bloqueado entonces inicio
gira(2);
mientras frente-libre hacer avanza;
gira(1);
fin;
fin;
define-nueva-instruccion jo como inicio
si frente-libre y orientado-al-este entonces inicio
avanza;
gira(1);
fin;
fin;
define-nueva-instruccion LOL(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
LOL(sucede(n));
fin sino inicio
repetir n veces INICIO
mientras orientado-al-norte hacer inicio
Mientras no-junto-a-zumbador y frente-libre hacer avanza;
si junto-a-zumbador entonces inicio
deja-zumbador;
ja;
si frente-libre y orientado-al-norte entonces avanza;
fin;
Si orientado-al-norte y no-junto-a-zumbador entonces ja;
jo;
Fin;
gira(2);
mientras frente-libre hacer avanza;
gira(3);
Mientras orientado-al-norte hacer inicio
mientras no-junto-a-zumbador y frente-libre hacer avanza;
si junto-a-zumbador entonces inicio
coge-zumbador;
si junto-a-zumbador entonces inicio
repetir 4 veces inicio
si  frente-libre entonces inicio
avanza;
si no junto-a-zumbador entonces deja-zumbador;
gira(2);
avanza;
gira(2);
fin;
gira(1);
fin;
fin;
si no-junto-a-zumbador entonces inicio
deja-zumbador;
fin;
ja;
si frente-libre y orientado-al-norte entonces avanza;

fin;
si orientado-al-norte y no-junto-a-zumbador entonces ja;
jo;
Fin;
gira(2);
mientras frente-libre hacer avanza;
gira(3);
FIN;
fin;
fin;
define-nueva-instruccion aburrida(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
aburrida(sucede(n));
fin sino inicio
si frente-libre entonces inicio
avanza;
aburrida(n);
fin;
si frente-bloqueado entonces inicio
ja;
jo;
si orientado-al-norte entonces aburrida(n);
fin;
si orientado-al-este entonces inicio
gira(2);
mientras frente-libre hacer avanza;
repetir n veces deja-zumbador;
apagate;
fin;
fin;
fin;
    inicia-ejecucion
   LOL(0);
   aburrida(0);
        apagate;
    termina-ejecucion
finalizar-programa
