iniciar-programa
define-nueva-instruccion gira(n) como inicio
    repetir n veces inicio
        gira-izquierda;
    fin;
fin;
define-nueva-instruccion toca-pared como inicio
    mientras frente-libre hacer inicio
        avanza;
    fin;
fin;
define-nueva-instruccion esquina como inicio
    mientras no-orientado-al-sur hacer inicio
        gira-izquierda;
    fin;
    toca-pared;
    gira(3);
    toca-pared;
    gira(2);
fin;
define-nueva-instruccion avanzar como inicio
    repetir 25 veces inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
        fin;
        avanza;
    fin;
fin;
define-nueva-instruccion recorre como inicio
    repetir 13 veces inicio
        avanzar;
        mientras no-orientado-al-norte hacer inicio
            gira-izquierda;
        fin;
        avanza;
        si izquierda-libre entonces inicio
            gira-izquierda;
        fin
        sino inicio
            gira(3);
        fin;
    fin;
    esquina;
fin;
define-nueva-instruccion construye como inicio
    mientras no-orientado-al-este hacer inicio
        gira-izquierda;
    fin;
    mientras algun-zumbador-en-la-mochila hacer inicio
        avanza;
        deja-zumbador;
        avanza;
        deja-zumbador;
        gira-izquierda;
        avanza;
        gira-izquierda;
        avanza;
        avanza;
        si frente-libre entonces inicio
            avanza;
            gira-izquierda;
            avanza;
            si junto-a-zumbador entonces inicio
                gira(2);
                avanza;
                gira-izquierda;
            fin
            sino inicio
                gira(2);
                avanza;
                gira(3);
                avanza;
                gira(2);
            fin;
        fin;
        si no-junto-a-zumbador entonces inicio
            gira(2);
            avanza;
            deja-zumbador;
            esquina;
            mientras junto-a-zumbador hacer inicio
                avanza;
            fin;
            gira(2);
            avanza;
            gira(2);
        fin
        sino inicio
            construye;
        fin;
    fin;
fin;
define-nueva-instruccion llega-punta como inicio
    si junto-a-zumbador entonces inicio
        avanza;
        si junto-a-zumbador entonces inicio
            avanza;
        fin;
        llega-punta;
        avanza;
    fin
    sino inicio
        gira(2);
    fin;
fin;
define-nueva-instruccion solucion como inicio
    mientras no-orientado-al-este hacer inicio
        gira-izquierda;
    fin;
    recorre;
    si algun-zumbador-en-la-mochila entonces inicio
        deja-zumbador;
    fin;
    mientras algun-zumbador-en-la-mochila hacer inicio
        construye;
    fin;
    esquina;
    si junto-a-zumbador entonces inicio
        llega-punta;
        gira(3);
        mientras junto-a-zumbador hacer inicio
            avanza;
        fin;
        gira(2);
        avanza;
    fin;
fin;
    inicia-ejecucion
        solucion;
        apagate;
    termina-ejecucion
finalizar-programa
