iniciar-programa
define-nueva-instruccion gira(i) como
inicio
    repetir i veces gira-izquierda;
fin;
define-nueva-instruccion camina como
inicio
    si frente-libre entonces avanza;
fin;

define-nueva-instruccion cuenta(n) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        cuenta(sucede(n));
    fin;
fin;
define-nueva-instruccion busca(n) como
inicio
    si no-junto-a-zumbador entonces
    inicio
        camina;
        busca(n);
    fin;
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            busca(sucede(n));
        fin
        sino
        inicio
            deja-zumbador;
            si junto-a-zumbador y no-orientado-al-norte entonces
            inicio
                gira(2);
                camina;
                gira(1);
                busca(n);
            fin;
            si junto-a-zumbador y orientado-al-norte entonces
            inicio
                gira(2);
                camina;
                camina;
                si no-junto-a-zumbador entonces
                inicio
                    gira(2);
                    camina;
                    gira(2);
                fin;
                si junto-a-zumbador entonces
                inicio
                    gira(2);
                    camina;
                    repetir n veces deja-zumbador;
                    apagate;
                fin
                sino
                inicio
                    repetir 2 veces camina;
                    gira(1);
                    repetir 2 veces camina;
                    busca(n);
                fin;
            fin;
        fin;
    fin;
    busca(n);
fin;
    inicia-ejecucion
    busca(0);
        apagate;
    termina-ejecucion
finalizar-programa
