iniciar-programa
define-nueva-instruccion    virus(n) como inicio
repetir n veces inicio



 mientras frente-libre hacer avanza;
    mientras no orientado-al-este hacer gira-izquierda;
    mientras  frente-libre hacer inicio
    mientras frente-libre hacer inicio
    mientras frente-libre y no-junto-a-zumbador hacer avanza;
    si junto-a-zumbador entonces inicio
    coge-zumbador;
    si junto-a-zumbador entonces deja-zumbador;
    si no-junto-a-zumbador entonces inicio
    deja-zumbador;
    mientras no-orientado-al-norte  hacer gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
 mientras no-orientado-al-sur  hacer gira-izquierda;
     si frente-libre entonces avanza;
        fin;

       mientras no-orientado-al-este  hacer gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
 mientras no-orientado-al-oeste  hacer gira-izquierda;
     si frente-libre entonces avanza;
       fin;

       mientras no-orientado-al-sur  hacer gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
 mientras no-orientado-al-norte  hacer gira-izquierda;
     si frente-libre entonces avanza;
       fin;
  mientras no-orientado-al-oeste   hacer gira-izquierda;
     si  frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
 mientras no-orientado-al-este  hacer gira-izquierda;
     si frente-libre entonces avanza;
     si frente-libre entonces avanza;
     fin
     sino inicio
   mientras no-orientado-al-este  hacer gira-izquierda;
     si frente-libre entonces avanza;
         fin;

     fin

           sino inicio
           si frente-libre entonces avanza;
           fin;
              fin;
               si frente-bloqueado y derecha-libre  entonces inicio
     si junto-a-zumbador entonces inicio
    coge-zumbador;
    si no-junto-a-zumbador entonces inicio
    deja-zumbador;
    mientras no-orientado-al-norte  hacer gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
 mientras no-orientado-al-sur  hacer gira-izquierda;
     si frente-libre entonces avanza;
        fin;

       mientras no-orientado-al-este  hacer gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
 mientras no-orientado-al-oeste  hacer gira-izquierda;
     si frente-libre entonces avanza;
       fin;

       mientras no-orientado-al-sur  hacer gira-izquierda;
     si frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
 mientras no-orientado-al-norte  hacer gira-izquierda;
     si frente-libre entonces avanza;
       fin;
  mientras no-orientado-al-oeste   hacer gira-izquierda;
     si izquierda-libre y frente-libre entonces inicio
     avanza;
     si no junto-a-zumbador entonces inicio
     deja-zumbador;
     deja-zumbador;
     fin;
     fin;
 mientras no-orientado-al-este  hacer gira-izquierda;
     si frente-libre entonces avanza;
      si frente-libre entonces avanza;
       fin;
       fin;

               mientras no-orientado-al-sur hacer gira-izquierda;
               si frente-libre entonces avanza;
               mientras no orientado-al-oeste hacer gira-izquierda;
               mientras frente-libre hacer avanza;
               mientras no orientado-al-este hacer gira-izquierda;
               fin;
               si (frente-bloqueado y derecha-bloqueada) y junto-a-zumbador entonces inicio
               coge-zumbador;
               si no-junto-a-zumbador entonces deja-zumbador;
               fin;


             fin;

             fin;
              mientras no orientado-al-norte hacer gira-izquierda;
              mientras frente-libre hacer avanza;
              mientras no orientado-al-oeste hacer gira-izquierda;
              mientras frente-libre hacer avanza;
              mientras no orientado-al-este hacer gira-izquierda;

              mientras frente-libre hacer inicio
               mientras no-junto-a-zumbador y frente-libre hacer avanza;
               si junto-a-zumbador entonces inicio
               coge-zumbador;
               si junto-a-zumbador y frente-libre entonces inicio
              si frente-libre entonces avanza;
               fin
               sino inicio
               si no-junto-a-zumbador entonces inicio
               deja-zumbador;
               si frente-libre entonces avanza;
               fin;
               fin;
               fin;
                 si frente-bloqueado y derecha-libre  entonces inicio
                 si junto-a-zumbador entonces inicio
                 coge-zumbador;
               si no-junto-a-zumbador entonces inicio
               deja-zumbador;
               si frente-libre entonces avanza;
               fin;
               fin;
                   mientras no-orientado-al-sur hacer gira-izquierda;
               si frente-libre entonces avanza;
               mientras no orientado-al-oeste hacer gira-izquierda;
               mientras frente-libre hacer avanza;
               mientras no orientado-al-este hacer gira-izquierda;
               fin;
             fin;
mientras no-orientado-al-oeste  hacer gira-izquierda;
mientras frente-libre hacer avanza;
mientras no-orientado-al-norte hacer gira-izquierda;

                   fin;
                   fin;


                      define-nueva-instruccion    dias(n) como inicio
                       si junto-a-zumbador entonces inicio
                       coge-zumbador;
                       dias(sucede(n));
                       fin
                       sino inicio
                              virus(n);
                       fin;
                        fin;
                       define-nueva-instruccion dosis(n) como inicio
                           si junto-a-zumbador entonces inicio
                           coge-zumbador;
                           dosis(sucede(n));
                           fin
                           sino inicio
                            si frente-libre entonces inicio
                            mientras frente-libre y no junto-a-zumbador hacer avanza;
                            si junto-a-zumbador entonces dosis(0);
                            fin;

                             si (frente-bloqueado y derecha-libre) y orientado-al-este  entonces inicio
               mientras no-orientado-al-sur hacer gira-izquierda;
               si frente-libre entonces avanza;
               mientras no orientado-al-oeste hacer gira-izquierda;
               mientras frente-libre hacer avanza;
               mientras no orientado-al-este hacer gira-izquierda;
               dosis(0);
               fin;

                 mientras no orientado-al-oeste hacer gira-izquierda;
                 mientras frente-libre hacer avanza;
                 repetir n veces deja-zumbador;
                 fin;
                 fin;


    inicia-ejecucion
          dias(0);
          mientras frente-libre hacer avanza;
          mientras no orientado-al-este hacer gira-izquierda;
           dosis(0);

        apagate;
    termina-ejecucion
finalizar-programa
