iniciar-programa
    define-nueva-instruccion r como repetir 2 veces gira-izquierda;
    define-nueva-instruccion d como inicio
        repetir 3 veces gira-izquierda;
        fin;
    define-nueva-instruccion ormult como inicio
        avanza;
        gira-izquierda;
        repetir 3 veces avanza;
        gira-izquierda;
        avanza;
        gira-izquierda;
        fin;
define-nueva-instruccion z(i) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            z(i);
            repetir i veces deja-zumbador;
            fin
            sino inicio
            gira-izquierda;
            avanza;
            d;
            avanza;
            d;
            avanza;
            fin;
        fin;
    define-nueva-instruccion multiplicar(i) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            multiplicar(sucede(i));
            fin
            sino inicio
            avanza;
            z(i);
            fin;
        fin;
    define-nueva-instruccion ordiv como inicio
        gira-izquierda;
        avanza;
        mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
        r;
        avanza;
        gira-izquierda;
        r;
        repetir 2 veces avanza;
        gira-izquierda;
        avanza;
        d;
        fin;
   define-nueva-instruccion u como inicio
       d;
       repetir 2 veces avanza;
       d;
       repetir 2 veces avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
       r;
       mientras frente-libre hacer avanza;
       d;
       avanza;
       mientras junto-a-zumbador hacer coge-zumbador;
       fin;
   define-nueva-instruccion w(i) como inicio
        d;
        avanza;
        gira-izquierda;
        avanza;
        gira-izquierda;
        avanza;
        si no-junto-a-zumbador entonces inicio
            r;
            avanza;
            u;
            apagate;
            fin;
        si junto-a-zumbador entonces inicio
            repetir i veces inicio
                si no-junto-a-zumbador entonces inicio
                    r;
                    avanza;
                    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                    u;
                    apagate;
                    fin;
                si junto-a-zumbador entonces coge-zumbador;
                fin;
            d;
            avanza;
            gira-izquierda;
            avanza;
            gira-izquierda;
            avanza;
            deja-zumbador;
            avanza;
            avanza;
            mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
            r;
            avanza;
            d;
            avanza;
            gira-izquierda;
            w(i);
            fin;
        fin;
    define-nueva-instruccion dividir(i) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            dividir(sucede(i));
            fin;
        repetir i veces deja-zumbador;
        w(i);
        fin;
    inicia-ejecucion
        ormult;
        multiplicar(0);
        ordiv;
        dividir(0);
        apagate;
    termina-ejecucion
finalizar-programa
