iniciar-programa
define-nueva-instruccion d como inicio
repetir 3 veces gira-izquierda;
fin;

define-nueva-instruccion x(n) como inicio
    si frente-libre y derecha-libre entonces inicio
        avanza;
        si orientado-al-norte entonces inicio
            x(sucede(n));
        fin
        sino inicio
            si orientado-al-sur entonces x(precede(n));
        fin;
        si orientado-al-oeste o orientado-al-este entonces x(n);
    fin
    sino inicio
        si derecha-bloqueada entonces inicio
            si frente-bloqueado entonces inicio
                repetir n veces deja-zumbador;
                apagate;
            fin;
            gira-izquierda;
            x(n);
        fin
        sino inicio
            si frente-bloqueado y orientado-al-norte entonces inicio
                repetir n veces deja-zumbador;
                apagate;
            fin
            sino inicio
                repetir n veces deja-zumbador;
                apagate;
            fin;
        fin;

    fin;

fin;
    inicia-ejecucion

    x(0);
        apagate;
    termina-ejecucion
finalizar-programa
