iniciar-programa
    define-nueva-instruccion gira (n) como inicio
        repetir n veces
            gira-izquierda;
    fin;
    define-nueva-instruccion mide como inicio
        si frente-libre entonces inicio
            avanza;
            mide;
            deja-zumbador;
        fin
        sino inicio
            gira (2);
            mientras frente-libre hacer
                avanza;
            gira (3);
            deja-zumbador;
        fin;
    fin;
    define-nueva-instruccion compara (n) como inicio
        si si-es-cero (n) entonces inicio
            mientras junto-a-zumbador hacer
                coge-zumbador;
        fin
        sino inicio
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                compara (precede(n));
                deja-zumbador;
            fin;
        fin;
    fin;
    define-nueva-instruccion mide2 (n) como inicio
        si frente-libre entonces inicio
            avanza;
            mide2 (sucede(n));
        fin
        sino inicio
            gira (2);
            mientras frente-libre hacer
                avanza;
            compara (n);
        fin;
    fin;
    define-nueva-instruccion checa como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                checa;
            fin
            sino inicio
                deja-zumbador;
            fin;
        fin;
    fin;
    define-nueva-instruccion impar (n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            impar (sucede(n));
        fin
        sino inicio
            repetir n veces
                deja-zumbador;
            checa;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                repetir n veces
                    deja-zumbador;
            fin
            sino inicio
                repetir precede (n) veces
                    deja-zumbador;
            fin;
        fin;
    fin;
    define-nueva-instruccion mitad como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                mitad;
                deja-zumbador;
            fin
            sino inicio
                deja-zumbador;
            fin;
        fin;
    fin;
    define-nueva-instruccion posicion (n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            posicion (sucede(n));
        fin
        sino inicio
            mientras no-orientado-al-norte hacer
                gira (1);
            repetir precede (n) veces
                avanza;
            gira (3);
            repetir precede (n) veces
                avanza;
            deja-zumbador;
        fin;
    fin;
    define-nueva-instruccion rodea (n) como inicio
        repetir 4 veces inicio
            repetir n veces inicio
                repetir 2 veces inicio
                    si no-junto-a-zumbador entonces inicio
                        repetir sucede (n) veces
                            deja-zumbador;
                    fin;
                    si frente-libre entonces
                        avanza;
                fin;
            fin;
            gira (1);
        fin;
        si derecha-libre entonces inicio
            gira (3);
            avanza;
            gira (3);
            avanza;
            gira (2);
            rodea (sucede(n));
        fin;
    fin;
    define-nueva-instruccion cubos como inicio
        mientras no-orientado-al-este hacer
            gira (1);
        mide;
        mide2 (1);
        impar (0);
        mitad;
        posicion (0);
        si derecha-libre entonces inicio
            gira (3);
            avanza;
            gira (3);
            avanza;
            gira (2);
            rodea (1);
        fin;
    fin;
    inicia-ejecucion
        cubos;
        apagate;
    termina-ejecucion
finalizar-programa