iniciar-programa

define-nueva-instruccion choca como  mientras frente-libre hacer avanza;
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 media-vuelta como repetir 2 veces gira-izquierda;

define-nueva-instruccion ir11-este como inicio
    sur; choca; oeste; choca; este;
fin;



define-nueva-instruccion busca(n) como inicio
   si no si-es-cero(n) entonces inicio
       si frente-libre entonces inicio
           avanza;
           si junto-a-zumbador entonces inicio
               busca(precede(n));
           fin sino inicio
               repetir 80 veces inicio
                   si no-junto-a-zumbador entonces inicio
                       si frente-libre entonces inicio
                           avanza;
                       fin sino inicio
                           gira-izquierda;
                           avanza;
                       fin;
                   fin;
               fin;
               si no-junto-a-zumbador entonces inicio
                  sal-de-instruccion;
               fin sino inicio
                   busca(precede(n));
               fin;
           fin;
       fin sino inicio
           gira-izquierda;
           avanza;
           si junto-a-zumbador entonces inicio
               busca(precede(n));
           fin sino inicio
               repetir 80 veces inicio
                   si no-junto-a-zumbador entonces inicio
                       si frente-libre entonces inicio
                           avanza;
                       fin sino inicio
                           gira-izquierda; avanza;
                       fin;
                   fin;
               fin;
               si no-junto-a-zumbador entonces inicio
                   sal-de-instruccion;
               fin sino inicio
                   busca(precede(n));
               fin;
           fin;
       fin;
   fin;
fin;

define-nueva-instruccion elimina(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        elimina(sucede(n));
    fin sino inicio
        busca(n);
        si no-junto-a-zumbador entonces inicio
           ir11-este;
           repetir n veces deja-zumbador;
           apagate;
        fin sino inicio
            elimina(0);
        fin;
    fin;
fin;


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