iniciar-programa
    define-nueva-instruccion gira-derecha como
        repetir 3 veces
            gira-izquierda;
    define-nueva-instruccion media-vuelta como
        repetir 2 veces
            gira-izquierda;
    define-nueva-instruccion ubicar(n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            ubicar(sucede(n));
            avanza;
        fin
        sino inicio
            mientras frente-libre hacer
                avanza;
            media-vuelta;
         fin;
    fin;
    define-nueva-instruccion distancia(m) como
        si no-junto-a-zumbador entonces inicio
            avanza;
            distancia(sucede(m));
        fin
        sino inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                media-vuelta;
                mientras frente-libre hacer
                    avanza;
                gira-izquierda;
                avanza;
                repetir m veces
                    deja-zumbador;
                apagate;
            fin
            sino
                deja-zumbador;
            si orientado-al-este entonces inicio
            avanza;
            repetir m veces
                si no-junto-a-zumbador entonces
                    avanza
                sino inicio
                    media-vuelta;
                    avanza;
                    mientras no-junto-a-zumbador hacer
                        avanza;
                    media-vuelta;
                    coge-zumbador;
                    distancia(0);
                fin;
            mientras no-junto-a-zumbador hacer
                avanza;
            distancia(m);
            fin;
           fin;
    define-nueva-instruccion mayor(x) como
        si junto-a-zumbador y orientado-al-este entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                avanza;
                si junto-a-zumbador entonces
                    coge-zumbador
                sino inicio
                    media-vuelta;
                    avanza;
                    deja-zumbador;
                fin;
                si no-junto-a-zumbador entonces inicio
                    repetir x veces
                        deja-zumbador;
                    deja-zumbador;
                    media-vuelta;
                    avanza;
                    mientras junto-a-zumbador hacer inicio
                        coge-zumbador;
                        media-vuelta;
                        avanza;
                        deja-zumbador;
                        media-vuelta;
                        avanza;
                    fin;
                    repetir x veces
                        deja-zumbador;
                    deja-zumbador;
                    media-vuelta;
                    avanza;
                    mayor(0);
                fin
                sino
                si orientado-al-este entonces inicio
                media-vuelta;
                avanza;
                media-vuelta;
                mayor(sucede(x));
                fin;
           fin
           sino inicio
               repetir x veces
                   deja-zumbador;
               deja-zumbador;
               avanza;
               repetir x veces
                   deja-zumbador;

              mayor(0);
           fin;
        fin;


    inicia-ejecucion

    gira-derecha;
      mayor(0);
    mientras frente-libre hacer
        avanza;
    media-vuelta;
    mientras junto-a-zumbador  y frente-libre hacer
        si frente-libre entonces
            avanza;
    media-vuelta;
    si no-junto-a-zumbador entonces
        avanza;

     coge-zumbador;
        ubicar(0);
        gira-izquierda;
        avanza;
        deja-zumbador;
        deja-zumbador;
        media-vuelta;
        avanza;
        gira-derecha;
        mientras no-junto-a-zumbador y orientado-al-oeste hacer
            si frente-libre entonces
                avanza
            sino
                gira-derecha;
    mientras junto-a-zumbador hacer inicio
        coge-zumbador;
        ubicar(0);
        gira-izquierda;
        avanza;
        deja-zumbador;
        media-vuelta;
        avanza;
        gira-derecha;
        mientras no-junto-a-zumbador y orientado-al-oeste hacer
            si frente-libre entonces
                avanza
            sino
                gira-derecha;
    fin;
    avanza;
    gira-derecha;
    mientras no-junto-a-zumbador hacer
        avanza;
    coge-zumbador;
    distancia(0);

        apagate;
    termina-ejecucion
finalizar-programa
