iniciar-programa
define-nueva-instruccion media-vuelta como
inicio
    gira-izquierda;
    gira-izquierda;
fin;
define-nueva-instruccion gira-derecha como
inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
fin;
define-nueva-instruccion regresa como
inicio
    media-vuelta;
    mientras frente-libre hacer
    inicio
        avanza;
    fin;
    si izquierda-libre entonces gira-izquierda;
    mientras junto-a-zumbador hacer
    inicio
        avanza;
    fin;
    gira-izquierda;
fin;
define-nueva-instruccion poner-zumbadores como
inicio
    si no-junto-a-zumbador entonces
    inicio
        gira-izquierda;
        si frente-libre entonces avanza;
        si junto-a-zumbador entonces
        inicio
            media-vuelta;
            si frente-libre entonces avanza;
            si algun-zumbador-en-la-mochila entonces
            inicio
                deja-zumbador;
            fin;
            gira-izquierda;
            si frente-libre entonces avanza;
        fin;
    fin;
fin;
define-nueva-instruccion ve-al-origen como
inicio
    gira-izquierda;
    mientras frente-libre hacer
    inicio
        avanza;
    fin;
    gira-izquierda;
    mientras junto-a-zumbador hacer
    inicio
        si frente-bloqueado entonces
        inicio
            gira-izquierda;
            mientras frente-libre hacer
            inicio
                avanza;
            fin;
            si algun-zumbador-en-la-mochila entonces deja-zumbador;
            apagate;
        fin;
        avanza;
    fin;
    media-vuelta;
    si frente-libre entonces avanza;
    gira-derecha;
    mientras junto-a-zumbador hacer
    inicio
        avanza;
    fin;
    si algun-zumbador-en-la-mochila entonces deja-zumbador;

    media-vuelta;
    mientras frente-libre hacer
    inicio
        avanza;
    fin;
    gira-izquierda;
    mientras junto-a-zumbador hacer
    inicio
        avanza;
    fin;
    gira-izquierda;
fin;
    inicia-ejecucion
        si algun-zumbador-en-la-mochila entonces deja-zumbador;
        gira-derecha;
        si frente-libre entonces avanza;
        si algun-zumbador-en-la-mochila entonces deja-zumbador;
        gira-izquierda;
        si frente-libre entonces avanza;
        si algun-zumbador-en-la-mochila entonces deja-zumbador;
        regresa;
        mientras orientado-al-norte hacer
        inicio
           poner-zumbadores;
           si orientado-al-oeste y no-junto-a-zumbador y algun-zumbador-en-la-mochila entonces ve-al-origen;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa 