iniciar-programa
    define-nueva-instruccion g(n) como
        repetir n veces
            gira-izquierda;
    define-nueva-instruccion izq(n) como
    inicio
        repetir n veces
        inicio
            si no-junto-a-zumbador entonces
            inicio
                si frente-libre entonces
                    avanza
                sino
                inicio
                    mientras frente-bloqueado hacer
                        g(3);
                    avanza;
                fin;
                si izquierda-libre entonces
                inicio
                    g(1);
                fin;
            fin
            sino
                apagate;
        fin;
    fin;
    define-nueva-instruccion der(n) como
    inicio
        repetir n veces
        inicio
            si no-junto-a-zumbador entonces
            inicio
                si frente-libre entonces
                    avanza
                sino
                inicio
                    mientras frente-bloqueado hacer
                        g(1);
                    avanza;
                fin;
                si derecha-libre entonces
                inicio
                    g(3);
                fin;
            fin
            sino
                apagate;
        fin;
    fin;
    define-nueva-instruccion r(n) como
    inicio
        izq(n);
        si junto-a-zumbador entonces
            apagate;
        g(2);
        si derecha-libre entonces
            g(3);
        der(n);
        der(n);
        der(n);
        si junto-a-zumbador entonces
            apagate;
        g(2);
        si izquierda-libre entonces
            g(1);
        izq(n);
        izq(n);
    fin;
    inicia-ejecucion
        mientras frente-libre hacer
            g(1);
        g(3);
        r(2);

        r(8);

        r(32);

        r(128);

        r(512);

        r(2048);

        r(8192);

        r(32768);

        r(131072);

        r(524288);

        apagate;
    termina-ejecucion
finalizar-programa
