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 primero como
    inicio
        mientras no-junto-a-zumbador hacer avanza;
    fin ;
define-nueva-instruccion new como
    inicio
        sur;
        mientras frente-libre hacer avanza;
        norte;

     fin;
define-nueva-instruccion newcol como
    inicio
        este;
        si frente-libre entonces
            inicio
                avanza;
                norte;
            fin
            sino
                oeste;
    fin;
define-nueva-instruccion passig como
    inicio
        mientras no-junto-a-zumbador y frente-libre hacer avanza;
    fin;


define-nueva-instruccion compara(i) como
    inicio
        repetir i veces
            inicio
               si junto-a-zumbador entonces
                   inicio
                       coge-zumbador;
                   fin;
            fin;
         si junto-a-zumbador entonces repetir i veces deja-zumbador;

      fin;

define-nueva-instruccion cuenta(i) como
    inicio
        si junto-a-zumbador entonces
        INICIO
            coge-zumbador;
            cuenta(sucede(i))
        fin
        sino
        inicio
            passig;
            si no-junto-a-zumbador y frente-bloqueado entonces
                inicio
                    new;
                    si no-junto-a-zumbador entonces

                      repetir i veces
                        inicio
                            deja-zumbador;
                            si frente-libre entonces avanza;
                        fin;
                       new;
                       newcol;
                       si no-orientado-al-oeste entonces
                       cuenta(0);
                fin
            sino
            si no-orientado-al-oeste entonces
                inicio
                 compara(i);
                  si no-junto-a-zumbador y frente-libre  entonces
                      mientras no-junto-a-zumbador y frente-libre hacer
                          inicio
                              passig;
                              compara(i);
                          fin;

                              si frente-bloqueado y no-junto-a-zumbador entonces cuenta(i)
                              sino
                                  cuenta(0);
                  fin;







         fin;

      fin;

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