iniciar-programa
    define-nueva-instruccion gira(x) como repetir x veces gira-izquierda;

    define-nueva-instruccion colados(x) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            colados(sucede(x));
        fin sino inicio
            mientras no-junto-a-zumbador hacer avanza;
            coge-zumbador;
            gira(3);
            avanza;
            gira(1);
            repetir x veces coge-zumbador;
            mientras junto-a-zumbador hacer avanza;
            repetir x veces deja-zumbador;
            apagate;
        fin;
    fin;

    define-nueva-instruccion buscarlos(x) como inicio
        repetir x veces inicio
            si no-junto-a-zumbador entonces inicio
                avanza;
                buscarlos(x);
            fin sino inicio
                coge-zumbador;
            fin;
        fin;
        si junto-a-zumbador entonces inicio
            avanzA;
            buscarlos(x);
        fin sino inicio
            repetir x veces deja-zumbador;
            gira(1);
            avanza;
            deja-zumbador;
            gira(1);
            mientras frente-libre hacer avanza;
            gira(2);
            avanza;
            colados(0);
        fin;
    fin;

    define-nueva-instruccion los-que-colaron-a-los-colados(x) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            los-que-colaron-a-los-colados(sucede(x));
        fin sino inicio
            avanza;
            gira(1);
            buscarlos(x);
        fin;
    fin;

    inicia-ejecucion
        mientras no-orientado-al-norte hacer gira-izquierda;
        avanza;
        gira(2);
        los-que-colaron-a-los-colados(0);
        apagate;
    termina-ejecucion
finalizar-programa
