iniciar-programa
define-nueva-instruccion norte como inicio mientras no-orientado-al-norte  hacer gira-izquierda;   fin;
define-nueva-instruccion sur como  inicio mientras no-orientado-al-sur  hacer gira-izquierda; fin;
define-nueva-instruccion este como  inicio  mientras no-orientado-al-este  hacer gira-izquierda; fin;
define-nueva-instruccion oeste como inicio mientras no-orientado-al-oeste  hacer gira-izquierda; fin;

define-nueva-instruccion compara(r) como
    inicio
        repetir r veces si junto-a-zumbador entonces coge-zumbador;
        si no-junto-a-zumbador entonces
            inicio
                 oeste;
                 avanza;
            fin;
    fin;

define-nueva-instruccion venorte(r) como
    inicio
        repetir r veces si junto-a-zumbador entonces coge-zumbador;
        si no-junto-a-zumbador entonces
            inicio
                sur;
                avanza;
            fin;
    fin;
define-nueva-instruccion cuenta2(r) como
    inicio
        si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                cuenta2(sucede(r));
            fin
            sino
                inicio
                    avanza;
                    venorte(r);
                    si junto-a-zumbador entonces cuenta2(r);
                fin;
    fin;

define-nueva-instruccion cuenta(r) como
    inicio
        si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                cuenta(sucede(r));
            fin
            sino
                inicio
                    avanza;
                    compara(r);
                    si junto-a-zumbador entonces cuenta(r);
                    si no-junto-a-zumbador entonces
                        inicio
                            norte;
                            cuenta2(r);
                        fin;
                 fin;
     fin;

    inicia-ejecucion
    este;
        cuenta(0);
        apagate;
    termina-ejecucion
finalizar-programa
