iniciar-programa
define-nueva-instruccion vuelta como inicio
gira-izquierda;
gira-izquierda;
fin;
define-nueva-instruccion derecha como inicio
vuelta;
gira-izquierda;
fin;
define-nueva-instruccion ava como inicio
mientras frente-libre hacer avanza;
fin;
define-nueva-instruccion a como inicio
mientras frente-libre hacer avanza;
gira-izquierda;
si izquierda-bloqueada y orientado-al-norte entonces inicio
vuelta;
ava;
vuelta;
fin;
si derecha-bloqueada y orientado-al-norte entonces inicio
vuelta;
ava;
derecha;
ava;
derecha;
fin;
si izquierda-bloqueada y orientado-al-sur entonces inicio
ava; 
derecha;

ava;
derecha;
fin;
si derecha-bloqueada y orientado-al-sur entonces inicio
ava;
vuelta;
fin;
si derecha-bloqueada y orientado-al-este entonces inicio
vuelta;
ava;
derecha;
fin;
si izquierda-bloqueada y orientado-al-este entonces inicio
vuelta;
ava;
gira-izquierda;
ava;
vuelta;
fin;
si derecha-bloqueada y orientado-al-oeste entonces inicio
ava;
gira-izquierda;
ava;
vuelta

fin;
si izquierda-bloqueada y orientado-al-oeste entonces inicio
ava;
derecha;
fin;
fin;
define-nueva-instruccion b como inicio
si no-junto-a-zumbador entonces
deja-zumbador;
mientras frente-libre y orientado-al-norte hacer inicio
avanza;
derecha;
avanza;
gira-izquierda;
b;
fin;
mientras frente-libre y orientado-al-sur hacer inicio
avanza;
gira-izquierda;
avanza;
derecha;
b;
fin;
fin;
define-nueva-instruccion c como inicio
gira-izquierda;
ava;
gira-izquierda;
b;
fin;
inicia-ejecucion
a;
b;
c;
apagate;
termina-ejecucion
finalizar-programa