iniciar-programa
define-nueva-instruccion checa como inicio
si orientado-al-sur entonces gira-izquierda;
si orientado-al-oeste entonces repetir 2 veces gira-izquierda;
si orientado-al-norte entonces repetir 3 veces gira-izquierda;
si orientado-al-este entonces inicio
mientras no junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces gira-izquierda;
fin;
fin;
define-nueva-instruccion revisa como inicio
si junto-a-zumbador entonces gira-izquierda;
si (orientado-al-oeste y junto-a-zumbador)y frente-libre entonces avanza;
si (orientado-al-oeste y junto-a-zumbador)y frente-bloqueado entonces repetir 2 veces gira-izquierda;
si orientado-al-oeste y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-este y no junto-a-zumbador entonces avanza;
si orientado-al-este y junto-a-zumbador entonces avanza;
si orientado-al-este y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-oeste y no junto-a-zumbador entonces avanza;
si orientado-al-oeste y junto-a-zumbador entonces repetir 3 veces gira-izquierda;
fin;
define-nueva-instruccion rama como inicio
si orientado-al-este y junto-a-zumbador entonces mientras junto-a-zumbador hacer avanza;
si orientado-al-este y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-oeste y no junto-a-zumbador entonces avanza;
si orientado-al-oeste y junto-a-zumbador entonces repetir 3 veces gira-izquierda;
si orientado-al-norte y junto-a-zumbador entonces mientras junto-a-zumbador hacer avanza;
si orientado-al-norte y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-sur y no junto-a-zumbador entonces avanza;
mientras (orientado-al-sur y junto-a-zumbador)y frente-libre hacer inicio
mientras (orientado-al-sur y junto-a-zumbador)y frente-libre hacer coge-zumbador;
si orientado-al-sur y no junto-a-zumbador entonces avanza;
si frente-bloqueado y junto-a-zumbador entonces repetir 3 veces gira-izquierda;
fin;
si orientado-al-sur y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-norte y no junto-a-zumbador entonces avanza;
si orientado-al-norte y no junto-a-zumbador entonces gira-izquierda;
si orientado-al-oeste y no junto-a-zumbador entonces avanza;
mientras (orientado-al-oeste y junto-a-zumbador)y frente-libre hacer inicio
mientras junto-a-zumbador y frente-libre hacer coge-zumbador;
si orientado-al-oeste y no junto-a-zumbador entonces avanza;
fin;
si (frente-bloqueado y orientado-al-oeste)y junto-a-zumbador entonces repetir 3 veces gira-izquierda;
si orientado-al-oeste y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-este y no junto-a-zumbador entonces avanza;
si orientado-al-este y no junto-a-zumbador entonces gira-izquierda;
si orientado-al-norte y no junto-a-zumbador entonces deja-zumbador;
fin;
define-nueva-instruccion rama1 como inicio
si orientado-al-norte y no junto-a-zumbador entonces gira-izquierda;
si (no junto-a-zumbador y orientado-al-oeste)y frente-libre entonces avanza;
si no junto-a-zumbador y orientado-al-oeste entonces gira-izquierda;
si junto-a-zumbador y orientado-al-oeste entonces repetir 3 veces gira-izquierda;
si no junto-a-zumbador y orientado-al-sur entonces avanza;
mientras (no junto-a-zumbador y orientado-al-sur)y frente-libre hacer inicio
mientras orientado-al-sur y frente-libre hacer avanza;
si frente-bloqueado entonces repetir 3 veces gira-izquierda;
mientras (frente-libre y izquierda-bloqueada)y no junto-a-zumbador hacer avanza;
si frente-bloqueado y izquierda-bloqueada entonces mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
fin;
si junto-a-zumbador y orientado-al-sur entonces repetir 3 veces gira-izquierda;
mientras (orientado-al-oeste y junto-a-zumbador)y frente-libre hacer avanza;
si (orientado-al-oeste y frente-bloqueado) y (izquierda-libre y junto-a-zumbador) entonces repetir 3 veces gira-izquierda;
si orientado-al-oeste y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-este y no junto-a-zumbador entonces avanza;
si orientado-al-este y junto-a-zumbador entonces gira-izquierda;
si orientado-al-norte y junto-a-zumbador entonces mientras junto-a-zumbador hacer avanza;
si orientado-al-norte y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-sur y no junto-a-zumbador entonces avanza;
mientras (frente-libre y orientado-al-sur)y junto-a-zumbador hacer inicio
si (orientado-al-sur y junto-a-zumbador) y (derecha-libre y frente-libre) entonces mientras junto-a-zumbador hacer coge-zumbador;
si (orientado-al-sur y junto-a-zumbador)y derecha-bloqueada entonces mientras junto-a-zumbador hacer coge-zumbador;
si orientado-al-sur y no junto-a-zumbador entonces avanza;
fin;
si orientado-al-sur y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-norte y no junto-a-zumbador entonces avanza;
si orientado-al-norte y no junto-a-zumbador entonces repetir 3 veces gira-izquierda;
si orientado-al-este y no junto-a-zumbador entonces avanza;
mientras (orientado-al-este y junto-a-zumbador)y frente-libre hacer inicio
si (orientado-al-este y junto-a-zumbador)y derecha-libre entonces mientras junto-a-zumbador hacer coge-zumbador;
si orientado-al-este y no junto-a-zumbador entonces avanza;
fin;
si orientado-al-este y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si (orientado-al-oeste y no junto-a-zumbador) y frente-libre entonces avanza;
si (orientado-al-oeste y no junto-a-zumbador) y frente-libre entonces repetir 3 veces gira-izquierda;
si (orientado-al-norte y no junto-a-zumbador)y izquierda-libre entonces deja-zumbador;
si (orientado-al-sur y frente-bloqueado)y junto-a-zumbador entonces inicio
si orientado-al-sur entonces repetir 2 veces gira-izquierda;
si orientado-al-norte entonces mientras junto-a-zumbador hacer avanza;
si no junto-a-zumbador entonces repetir 3 veces gira-izquierda;
si no junto-a-zumbador y orientado-al-este entonces deja-zumbador;
si junto-a-zumbador y orientado-al-este entonces avanza;
mientras no junto-a-zumbador hacer avanza;
si junto-a-zumbador y orientado-al-este entonces gira-izquierda;
si orientado-al-norte y junto-a-zumbador entonces mientras junto-a-zumbador hacer avanza;
si orientado-al-norte y no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
si orientado-al-sur y no junto-a-zumbador entonces avanza;
mientras orientado-al-sur y junto-a-zumbador hacer inicio
si junto-a-zumbador entonces coge-zumbador;
si no junto-a-zumbador entonces avanza;
fin;
si orientado-al-sur y frente-bloqueado entonces repetir 3 veces gira-izquierda;
mientras no junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces repetir 3 veces gira-izquierda;
fin;
fin;
    inicia-ejecucion
    si frente-bloqueado y derecha-bloqueada entonces inicio
    si frente-bloqueado y derecha-bloqueada entonces mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
    fin;
    checa;
    mientras frente-libre y junto-a-zumbador hacer inicio
    avanza;
    revisa;
    si orientado-al-este y junto-a-zumbador entonces rama;
    si orientado-al-norte y no junto-a-zumbador entonces rama1;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
