iniciar-programa
define-nueva-instruccion gira(k) como repetir k veces gira-izquierda;
define-nueva-instruccion cuenta como inicio
    si frente-libre entonces inicio
        avanza;
        cuenta;
    fin;
    si orientado-al-este entonces avanza;
    si orientado-al-oeste entonces inicio
        gira(3);
        avanza;
        avanza;
        gira(2);
        mientras junto-a-zumbador hacer coge-zumbador;
        avanza;
        avanza;
        gira-izquierda;
    fin;
fin;
define-nueva-instruccion medio como inicio
    si frente-libre entonces inicio
        si frente-libre entonces avanza;
        si frente-libre entonces avanza;
        medio;
    fin;
    si frente-libre entonces avanza;
    si frente-bloqueado entonces gira(2);
fin;
    inicia-ejecucion
mientras no-orientado-al-este hacer gira-izquierda;
mientras frente-libre hacer inicio
    gira-izquierda;
    mientraS frente-libre hacer inicio
        mientras no-junto-a-zumbador y frente-libre hacer avanza;
        si junto-a-zumbador entonces coge-zumbador;
    fin;
    gira(2);
    mientras frente-libre hacer avanza;
    gira-izquierda;
    si frente-libre entonces avanza;
fin;
gira(2);
mientras frente-libre hacer avanza;
gira(3);
avanza;
mientras algun-zumbador-en-la-mochila hacer inicio
    si algun-zumbador-en-la-mochila entonces deja-zumbador;
    avanza;
    gira(2);
    si algun-zumbador-en-la-mochila entonces deja-zumbador;
    avanza;
    gira(2);
fin;
mientras junto-a-zumbador hacer coge-zumbador;
gira(2);
avanza;
gira-izquierda;
deja-zumbador;
avanza;
gira-izquierda;
avanza;
mientras algun-zumbador-en-la-mochila hacer inicio
    mientras no-orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer inicio
        si algun-zumbador-en-la-mochila entonces deja-zumbador;
        avanza;
    fin;
    si algun-zumbador-en-la-mochila entonces deja-zumbador;
    gira(2);
    mientras junto-a-zumbador y frente-libre hacer avanza;
    gira(3);
    avanza;
fin;
mientras no-orientado-al-sur hacer gira-izquierda;
mientras frente-libre hacer avanza;
gira(3);
cuenta;
gira(2);
avanza;
gira(3);
mientras frente-libre hacer avanza;
gira(2);
mientras no-junto-a-zumbador y frente-libre hacer avanza;
medio;
gira(2);
avanza;
mientras algun-zumbador-en-la-mochila hacer inicio
    mientras frente-libre hacer inicio
        si algun-zumbador-en-la-mochila entonces deja-zumbador;
        avanza;
    fin;
    si algun-zumbador-en-la-mochila entonces deja-zumbador;
    gira(2);
    mientras junto-a-zumbador y frente-libre hacer avanza;
    gira(2);
    si frente-libre entonces avanza;
    si frente-libre entonces avanza;
    gira-izquierda;
    avanza;
    gira(3);
fin;
MIENTRAS NO-ORIENTADO-AL-NORTE HACER GIRA-IZQUIERDA;
MIENTRAS FRENTE-LIBRE HACER AVANZA;
GIRA(2);
MIENTRAS NO-JUNTO-A-ZUMBADOR HACER INICIO
    GIRA(3);
    MIENTRAS FRENTE-LIBRE Y NO-JUNTO-A-ZUMBADOR HACER AVANZA;
    SI JUNTO-A-ZUMBADOR ENTONCES APAGATE;
    GIRA(2);
    MIENTRAS FRENTE-LIBRE HACER AVANZA;
    GIRA(3);
    AVANZA;
FIN;
        apagate;
    termina-ejecucion
finalizar-programa
 