iniciar-programa
    define-nueva-instruccion resta(n) como
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            resta(sucede(n));
        fin
        sino
        inicio
            repetir 2 veces gira-izquierda;
            avanza;
            repetir n veces coge-zumbador;
            si no-junto-a-zumbador entonces
            inicio
                repetir 2 veces gira-izquierda;
                repetir 2 veces avanza;
                mientras junto-a-zumbador hacer coge-zumbador;
                deja-zumbador;
                repetir 2 veces gira-izquierda;
                avanza;
                repetir 2 veces gira-izquierda;
            fin;
        fin;
    fin;
    define-nueva-instruccion acomoda(df) como
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            acomoda(sucede(df));
        fin
        sino
        inicio
            repetir 2 veces gira-izquierda;
            avanza;
            gira-izquierda;
            repetir df veces deja-zumbador;
        fin;
    fin;
    define-nueva-instruccion dj(j) como
    inicio
         coge-zumbador;
         si junto-a-zumbador entonces
         inicio
             deja-zumbador;
             repetir 2 veces gira-izquierda;
             repetir 2 veces avanza;
             mientras junto-a-zumbador hacer
             inicio
                 coge-zumbador;
                 gira-izquierda;
                 avanza;

                 repetir j veces deja-zumbador;
                 repetir 2 veces gira-izquierda;
                 avanza;
                 gira-izquierda;
             fin;
             gira-izquierda;
             avanza;
             acomoda(0);
         fin
         sino
         inicio
             repetir 2 veces gira-izquierda;
             repetir 2 veces avanza;

         fin;

         repetir 2 veces gira-izquierda;
         repetir 2 veces avanza;
         si junto-a-zumbador entonces coge-zumbador;
         repetir 2 veces gira-izquierda;

    fin;
    define-nueva-instruccion cuenta(x) como
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            cuenta(sucede(x));
        fin
        sino
        inicio
            repetir x veces deja-zumbador;
            si junto-a-zumbador entonces coge-zumbador;
            repetir 2 veces gira-izquierda;
            avanza;
            repetir 2 veces gira-izquierda;
            si junto-a-zumbador entonces
            inicio
            dj(x);
            repetir 2 veces gira-izquierda;
            avanza;

            fin
            sino
            inicio
            repetir 2 veces gira-izquierda;
                mientras frente-libre hacer avanza;
            fin;
        fin;
    fin;
    define-nueva-instruccion copia(h) como
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            copia(sucede(h));
        fin
        sino
        inicio
            repetir 2 veces gira-izquierda;
            repetir 2 veces avanza;
            repetir h veces deja-zumbador;
            repetir 2 veces gira-izquierda;
            repetir 2 veces avanza;
            repetir h veces deja-zumbador;
            avanza;
            repetir h veces deja-zumbador;
            si junto-a-zumbador entonces coge-zumbador;
            repetir 2 veces gira-izquierda;
            repetir 2 veces avanza;

        fin;
    fin;
    inicia-ejecucion

        repetir 2 veces avanza;
        copia(0);
        resta(0);
        avanza;
        mientras frente-libre hacer cuenta(0);
        apagate;
    termina-ejecucion
finalizar-programa
 