iniciar-programa
define-nueva-instruccion gira(x) como repetir x veces gira-izquierda;
define-nueva-instruccion a(n) como inicio
    mientras orientado-al-este hacer inicio
            si derecha-bloqueada entonces inicio
                mientras junto-a-zumbador y frente-libre hacer avanza;
                repetir n veces deja-zumbador;
                si frente-bloqueado entonces apagate;
                gira(2);
                mientras frente-libre hacer avanza;
                gira(3);
                mientras frente-libre hacer avanza;
                gira(3);
                a(0);
                fin;
                mientras no junto-a-zumbador y izquierda-bloqueada y frente-libre hacer avanza;
                mientras no junto-a-zumbador y izquierda-libre y frente-libre hacer avanza;
                si frente-bloqueado entonces inicio
                si junto-a-zumbador entonces inicio
                    coge-zumbador;
                    gira(3);
                    avanza;                                            
                    gira(3);
                    mientras frente-libre hacer avanza;
                    gira(2);
                    a(sucede(n));
                    fin sino inicio
                gira(3);
                avanza;
                gira(3);
                mientras frente-libre hacer avanza;
                gira(2);
                fin;
               fin;
            si junto-a-zumbador y derecha-libre entonces inicio
            coge-zumbador;
            si frente-libre entonces avanza;
            a(sucede(n));
            fin;
            fin;
    fin;
    inicia-ejecucion
    mientras frente-libre hacer avanza;
    gira(3);
    a(0);
        apagate;
    termina-ejecucion
finalizar-programa
