iniciar-programa
    define-nueva-instruccion loca1 como inicio
        avanza;
        avanza;
        repetir 3 veces
            gira-izquierda;
        repetir 3 veces
            avanza;
    fin;
    define-nueva-instruccion loca2 como inicio
        repetir 5 veces
            avanza;
        repetir 3 veces
            gira-izquierda;
        repetir 3 veces
            avanza;
    fin;
    define-nueva-instruccion zumba1(z) como inicio
        si derecha-bloqueada entonces inicio
            si frente-libre entonces inicio
                avanza;
                zumba1 (sucede(z));
            fin
            sino inicio
                gira-izquierda;
                gira-izquierda;
                mientras frente-libre hacer
                    avanza;
                gira-izquierda;
                mientras frente-libre hacer
                    avanza;
                gira-izquierda;
                gira-izquierda;
                zumba1 (z);
            fin;
        fin
        sino inicio
            repetir z veces inicio
                deja-zumbador;
                deja-zumbador;
            fin;
        fin;
    fin;
    define-nueva-instruccion zumba2(x) como inicio
        si derecha-bloqueada entonces inicio
            si frente-libre entonces inicio
                avanza;
                zumba2 (sucede(x));
            fin
            sino inicio
                gira-izquierda;
                gira-izquierda;
                mientras frente-libre hacer
                    avanza;
                gira-izquierda;
                mientras frente-libre hacer
                    avanza;
                gira-izquierda;
                avanza;
                gira-izquierda;
                zumba2 (x);
            fin;
        fin
        sino inicio
            repetir x veces inicio
                deja-zumbador;
                deja-zumbador;
                deja-zumbador;
            fin;
        fin;
    fin;
    define-nueva-instruccion compara (n) como inicio
        si no si-es-cero(n) y junto-a-zumbador entonces inicio
            coge-zumbador;
            compara (precede(n));
        fin;
    fin;
    define-nueva-instruccion compa (n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            compa (sucede(n));
        fin
        sino inicio
            gira-izquierda;
            avanza;
            repetir n veces inicio
                si junto-a-zumbador entonces
                    coge-zumbador;
            fin;
            si junto-a-zumbador entonces inicio
                repetir n veces
                    deja-zumbador;
            fin
            sino inicio
                repetir n veces
                    deja-zumbador;
            fin;
        fin;
    fin;
    inicia-ejecucion
        mientras no-orientado-al-este hacer
           gira-izquierda;
        mientras frente-libre y no-junto-a-zumbador hacer
           avanza;
            repetir 3000 veces
               coge-zumbador;
         mientras no-orientado-al-oeste hacer
            gira-izquierda;
         mientras frente-libre hacer
            avanza;
         mientras no-orientado-al-norte hacer
            gira-izquierda;
        loca1;
        zumba1 (1);
        loca2;
        zumba2 (1);
        compa (0);
       apagate;
    termina-ejecucion
finalizar-programa

