iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;
define-nueva-instruccion dejar(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        dejar(sucede(n));
    fin sino inicio
        repetir n veces inicio
            deja-zumbador;
        fin;
        avanza;
        mientras no-junto-a-zumbador hacer inicio
            avanza;
        fin;
        repetir n veces inicio
            deja-zumbador;
        fin;
    fin;
fin;

define-nueva-instruccion ir11 como inicio
    sur;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    oeste;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    norte;
fin;

define-nueva-instruccion conejo(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        conejo(sucede(n));
    fin sino inicio
        avanza;
        avanza;
        este;
        mientras frente-libre y orientado-al-este hacer inicio
            repetir n veces inicio
                si frente-libre entonces inicio
                    avanza;
                fin sino inicio
                    ir11;
                fin;
            fin;
            si orientado-al-este entonces inicio
                deja-zumbador;
                oeste;
                repetir n veces inicio
                    si frente-libre entonces inicio
                        avanza;
                    fin;
                fin;
                este;
                dejar(0);
            fin;
        fin;
    fin;
fin;

define-nueva-instruccion tortuga(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        tortuga(sucede(n));
    fin sino inicio
        avanzA;
        avanza;
        este;
        mientras no-junto-a-zumbador hacer inicio
            avanza;
        fin;
        coge-zumbador;
        mientras frente-libre y orientado-al-este hacer inicio
            repetir n veces inicio
                si frente-libre entonces inicio
                    avanzA;
                fin sino inicio
                    ir11;
                fin;
            fin;
            si orientado-al-este entonces inicio
                deja-zumbador;  
                oeste;
                repetir n veces inicio
                    si frente-libre entonces inicio
                        avanza;
                    fin;
                fin;
                este;
                dejar(0);
            fin;
        fin;
    fin;
fin;

define-nueva-instruccion contar(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        contar(sucede(n));
    fin sino inicio
        ir11;
        repetir n veces inicio
            deja-zumbador;
        fin;
    fin;
fin;

define-nueva-instruccion pasos(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        pasos(sucede(n));
    fin sino inicio
        repetir n veces inicio
            deja-zumbador;
        fin;
        sur;
        avanza;
        repetir n veces inicio
            si junto-a-zumbador entonces inicio
                coge-zumbador;
            fin sino inicio         
                este;
                avanza;
            fin;
        fin;
        si no-junto-a-zumbador y orientado-al-sur entonces inicio
            norte;
            avanza;
            contar(0);
            apagate;
        fin;
    fin;
fin;

define-nueva-instruccion comparar como inicio
    mientras no-junto-a-zumbador hacer inicio
        avanza;
    fin;
    norte;
    avanzA;
    si junto-a-zumbador entonces inicio
        pasos(0);
    fin sino inicio
        sur;
        avanzA;
        este;
        avanza;
    fin;
    comparar;
fin;



    inicia-ejecucion
        avanza;
        tortuga(0);
        ir11;
        avanzA;
        avanzA;
        conejo(0);
        ir11;
        avanza;
        avanzA;
        avanza;
        este;
        comparar;
        apagate;
    termina-ejecucion
finalizar-programa
