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 busca2(i) como
    inicio
        si junto-a-zumbador entonces
                    inicio
                        coge-zumbador;
                        si no-junto-a-zumbador entonces
                            inicio

                                norte;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca2(i);
                                        sur;
                                        avanza;
                                    fin;



                                sur;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca2(i);
                                        norte;
                                        avanza;
                                    fin;



                                este;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca2(i);
                                        oeste;
                                        avanza;
                                    fin;



                                oeste;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca2(i);
                                        este;
                                        avanza;
                                    fin;
                                    si no-junto-a-zumbador entonces
                                        inicio
                                            si no si-es-cero(precede(i)) entonces
                                                inicio
                                                    repetir precede(i) veces deja-zumbador;

                                                    apagate;
                                                fin
                                                sino
                                                    inicio
                                                        este;
                                                        avanza;
                                                        repetir 5 veces deja-zumbador;
                                                        apagate;
                                                    fin;
                                        fin;
                          fin
                              sino
                                  inicio
                                      mientras junto-a-zumbador hacer coge-zumbador;
                                      deja-zumbador;
                                      busca2(sucede(i));
                                  fin;

                    fin;


    fin;
define-nueva-instruccion busca(i) como
    inicio
        si no si-es-cero(i) entonces
            inicio
                si junto-a-zumbador entonces
                    inicio
                        coge-zumbador;
                        si no-junto-a-zumbador entonces
                            inicio

                                norte;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca(i);
                                        sur;
                                        avanza;
                                    fin;



                                sur;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca(i);
                                        norte;
                                        avanza;
                                    fin;



                                este;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca(i);
                                        oeste;
                                        avanza;
                                    fin;



                                oeste;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        busca(i);
                                        este;
                                        avanza;
                                    fin;

                                     si no-junto-a-zumbador entonces
                                        inicio
                                               este;
                                               avanza;
                                               repetir 5 veces deja-zumbador;
                                               apagate;
                                        fin;


                          fin
                              sino
                                  inicio
                                      mientras junto-a-zumbador hacer coge-zumbador;
                                      deja-zumbador;
                                      busca(precede(i));
                                  fin;

                    fin;
            fin
            sino
                inicio
                    deja-zumbador;
                    busca2(0)
                fin;
     fin;

define-nueva-instruccion  cuenta(i)  como
    inicio
        si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                cuenta(sucede(i));
            fin
            sino
                inicio
                    si frente-libre entonces avanza;
                    busca(i);
                fin;
    fin;

    inicia-ejecucion
    cuenta(0);

        apagate;
    termina-ejecucion
finalizar-programa
