iniciar-programa
    define-nueva-instruccion dos(u) como
    inicio
       si no-orientado-al-norte y no-orientado-al-sur entonces
       inicio
           gira-izquierda;
           avanza;
           dos(u);
       fin
       sino
       inicio
           si no-orientado-al-sur entonces
           inicio
               si junto-a-zumbador entonces
               inicio
                   coge-zumbador;
                   avanza;
                   deja-zumbador;
                   repetir 2 veces gira-izquierda;
                   avanza;
                   repetir 2 veces gira-izquierda;
                   dos(sucede(u));
               fin
               sino
               inicio
                   avanza;
                   mientras junto-a-zumbador hacer
                   inicio
                       coge-zumbador;
                       repetir 2 veces gira-izquierda;
                       avanza;
                       deja-zumbador;
                       repetir 2 veces gira-izquierda;
                       avanza;
                   fin;
                   repetir 2 veces gira-izquierda;
                   repetir 3 veces avanza;
               fin;
           fin;
           si no si-es-cero(u) entonces
           inicio
               si junto-a-zumbador entonces
               inicio
                   coge-zumbador;
                   dos(precede(u));
               fin
               sino
               inicio
                   repetir 2 veces gira-izquierda;
                   avanza;
                   repetir 3 veces gira-izquierda;
                   si frente-bloqueado entonces
                   inicio
                       repetir u veces coge-zumbador;
                       apagate;
                   fin
                   sino
                   inicio
                       avanza;
                       dos(u);
                   fin;
               fin;
           fin
           sino
           inicio
                   repetir 2 veces gira-izquierda;
                   avanza;
                   repetir 3 veces gira-izquierda;
                   si frente-bloqueado entonces
                   inicio
                       repetir u veces deja-zumbador;
                       apagate;
                   fin
                   sino
                   inicio
                       avanza;
                       dos(u);
                   fin;
           fin;

       fin;


    fin;
    define-nueva-instruccion uno(i) como
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            uno(sucede(i));
        fin
        sino
        inicio
            mientras frente-libre hacer avanza;
            repetir i veces deja-zumbador;
            repetir 2 veces gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir 2 veces gira-izquierda;
            avanza;
            dos(i);
        fin;
    fin;
    inicia-ejecucion
        uno(0);
        apagate;
    termina-ejecucion
finalizar-programa
