iniciar-programa
define-nueva-instruccion subeytoma como
inicio
    mientras no-orientado-al-norte hacer
        gira-izquierda;
    mientras no junto-a-zumbador y frente-libre hacer
        avanza;
    mientras junto-a-zumbador hacer
        coge-zumbador;
fin;
define-nueva-instruccion retydeja como
inicio
    mientras no-orientado-al-sur hacer
        gira-izquierda;
    mientras frente-libre hacer
        avanza;
    mientras no orientado-al-norte hacer
        gira-izquierda;
    mientras algun-zumbador-en-la-mochila hacer
    inicio
        deja-zumbador;
        avanza;
    fin;
    mientras junto-a-zumbador hacer
        avanza;
fin;
define-nueva-instruccion regresainicio como
inicio
    mientras no orientado-al-oeste hacer
        gira-izquierda;
    mientras frente-libre hacer
        avanza;
    mientras no orientado-al-sur hacer
        gira-izquierda;
    mientras frente-libre hacer
        avanza;
    mientras no orientado-al-norte hacer
        gira-izquierda;
fin;
define-nueva-instruccion dejaunos como
inicio
    mientras junto-a-zumbador hacer
        coge-zumbador;
    deja-zumbador;
    avanza;
fin;
define-nueva-instruccion camina como
inicio
    si frente-libre entonces
        avanza;
    si frente-bloqueado entonces
        inicio
            mientras no orientado-al-este hacer
                gira-izquierda;
            si frente-libre entonces
                avanza
            sino
                apagate;
            mientras no orientado-al-sur hacer
                gira-izquierda;
            mientras frente-libre hacer
                avanza;
            mientras no orientado-al-norte hacer
                gira-izquierda;
        fin;
fin;
    inicia-ejecucion
        mientras frente-libre hacer
        inicio
            subeytoma;
            si frente-libre entonces
                retydeja
            sino
                si algun-zumbador-en-la-mochila entonces
                    retydeja;
             si frente-bloqueado entonces
             inicio
                 mientras no orientado-al-este hacer
                     gira-izquierda;
                 si frente-libre entonces
                 inicio
                     avanza;
                     retydeja;
                 fin
             fin;
        fin;
        regresainicio;
        mientras frente-libre hacer
        inicio
            mientras junto-a-zumbador hacer
                dejaunos;
            camina;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
