iniciar-programa
define-nueva-instruccion gira-derecha como inicio
repetir 3 veces gira-izquierda;
fin;
define-nueva-instruccion ava como inicio
si junto-a-zumbador entonces coge-zumbador;
mientras algun-zumbador-en-la-mochila hacer apagate;
fin;
define-nueva-instruccion media-vuelta como inicio
repetir 2 veces gira-izquierda;
fin;
    inicia-ejecucion
    mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer avanza;
     mientras frente-bloqueado hacer inicio
     si izquierda-libre entonces gira-izquierda;
     si derecha-libre entonces gira-derecha;
     mientras frente-libre y no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer ava;
    mientras frente-bloqueado y izquierda-bloqueada y orientado-al-oeste hacer inicio
    media-vuelta;
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    si frente-bloqueado y izquierda-libre entonces gira-izquierda;
    mientras derecha-bloqueada y no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer ava;
    si derecha-libre entonces gira-derecha;
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer ava;
    fin;
    mientras frente-bloqueado y derecha-bloqueada y orientado-al-oeste hacer inicio
    media-vuelta;
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    fin;
    mientras frente-bloqueado y derecha-bloqueada y izquierda-bloqueada y orientado-al-sur hacer inicio
    media-vuelta;
    mientras derecha-bloqueada y no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer ava;
    si derecha-libre entonces gira-derecha;
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer ava;
    fin;
    mientras frente-bloqueado y derecha-bloqueada y izquierda-bloqueada y orientado-al-norte hacer inicio
    media-vuelta;
    mientras izquierda-bloqueada y no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer ava;
    si izquierda-libre entonces gira-izquierda;
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    mientras junto-a-zumbador hacer ava;
    fin;
    fin;


        apagate;
    termina-ejecucion
finalizar-programa
