iniciar-programa
define-nueva-instruccion cuenta(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
repetir n veces deja-zumbador;
apagate;
fin;
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
cuenta(sucede(n));
fin;
si (frente-bloqueado y orientado-al-norte) y izquierda-libre entonces inicio
gira-izquierda;
cuenta(sucede(n));
fin;
si (frente-bloqueado y orientado-al-sur) y derecha-libre entonces inicio
repetir 3 veces gira-izquierda;
 cuenta(sucede(sucede(sucede(n))));
 fin;
 si (frente-bloqueado y orientado-al-este) y derecha-libre entonces inicio
repetir 3 veces gira-izquierda;
 cuenta(sucede(sucede(sucede(n))));
 fin;
 si (frente-bloqueado y orientado-al-oeste) y derecha-libre entonces inicio
repetir 3 veces gira-izquierda;
 cuenta(sucede(sucede(sucede(n))));
 fin;
 si (frente-bloqueado y orientado-al-oeste) y izquierda-libre entonces inicio
gira-izquierda;
 cuenta(sucede(n));
 fin;
 si frente-bloqueado y orientado-al-sur entonces inicio
gira-izquierda;
cuenta(sucede(n));
fin;
si frente-bloqueado y orientado-al-oeste entonces inicio
repetir 2 veces gira-izquierda;
cuenta(sucede(sucede(n)));
fin;
 si frente-bloqueado y orientado-al-norte entonces inicio
repetir 3 veces gira-izquierda;
cuenta(sucede(sucede(sucede(n))));
fin;
si frente-bloqueado y orientado-al-este entonces inicio
gira-izquierda;
cuenta(sucede(n));
fin;
fin;
fin;
(*Separacion*)
define-nueva-instruccion orientate(n) como inicio
si no frente-libre entonces inicio
gira-izquierda;
orientate(sucede(n));
fin;
cuenta(n);
fin;
    inicia-ejecucion
    orientate(0);
        apagate;
    termina-ejecucion
finalizar-programa
