iniciar-programa
define-nueva-instruccion gira (r) como inicio
 repetir r veces gira-izquierda;
fin;

define-nueva-instruccion bloqueado como inicio
 gira (2);
  mientras frente-libre hacer avanza;
  gira (3);
  avanza;
 gira (3);
fin;



define-nueva-instruccion deja como inicio
gira (2);
 mientras frente-libre hacer avanza;
 gira-izquierda;
 mientras frente-libre hacer avanza;
fin;



define-nueva-instruccion guardias (k) como inicio
 si frente-libre o izquierda-libre entonces inicio

  mientras no-junto-a-zumbador hacer inicio
   mientras frente-libre y no-junto-a-zumbador hacer avanza;
    si frente-bloqueado y izquierda-libre y no-junto-a-zumbador entonces inicio bloqueado;
    fin
     sino inicio
      si frente-bloqueado y izquierda-bloqueada y no-junto-a-zumbador entonces inicio
      deja;
      repetir k veces deja-zumbador;
      apagate;
      fin;
      fin;
      fin;

      si junto-a-zumbador entonces inicio
       coge-zumbador;
       si  no-junto-a-zumbador entonces guardias (k);
       deja-zumbador;
       repetir 2 veces coge-zumbador;
      guardias (sucede(k));
     fin;

    fin
   sino inicio
  deja;
 repetir k veces deja-zumbador;
 apagate;
 fin;
fin;


(*_________________________________________________________________*)
    inicia-ejecucion

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

                                        (*-----COLOCA a los guardias------*)
    mientras frente-libre o izquierda-libre hacer inicio

     mientras no-junto-a-zumbador hacer inicio
      mientras frente-libre y no-junto-a-zumbador hacer avanza;
       si frente-bloqueado y izquierda-libre y no-junto-a-zumbador entonces bloqueado;

       si frente-bloqueado y izquierda-bloqueada y no-junto-a-zumbador entonces inicio
       gira (2);
       mientras frente-libre hacer avanza;
       gira-izquierda;
       mientras frente-libre hacer avanza;
       gira-izquierda;
       guardias (0);
       fin;

        fin;

        si junto-a-zumbador entonces inicio
         coge-zumbador;
          si no-junto-a-zumbador entonces inicio

                             (*--------------*)
           repetir 4 veces inicio
            si frente-libre entonces inicio
            avanza;
             si no-junto-a-zumbador entonces inicio
             repetir 2 veces deja-zumbador;
              fin
              sino inicio
               coge-zumbador;
               si junto-a-zumbador entonces inicio
                repetir 3 veces deja-zumbador;
                fin
                sino inicio
                deja-zumbador;
                fin;
                fin;

               gira (2);
               avanza;
              gira (2);
             fin;
             gira-izquierda;
            fin;
                    (*--------------------*)
            deja-zumbador;
             si frente-libre entonces inicio
              avanza;
              fin
               sino inicio
               si izquierda-libre entonces bloqueado;
               fin;


               fin
               sino inicio
              deja-zumbador;
              si frente-libre entonces inicio
             avanza;
             fin
            sino inicio
           si izquierda-libre entonces bloqueado;
          fin;
         fin;
        fin;

    fin;
                              (*----------CUENTA a los guardias--------*)

       si junto-a-zumbador entonces inicio
       gira (3);
       si frente-libre entonces avanza;
       gira-izquierda;

       si no-junto-a-zumbador entonces inicio
        repetir 2 veces deja-zumbador;
         fin
          sino inicio
           coge-zumbador;
            si junto-a-zumbador entonces inicio
             repetir 3 veces deja-zumbador;
             fin
            sino inicio
           deja-zumbador;
          fin;
         fin;

       fin;


       gira (2);
       mientras frente-libre hacer avanza;
       gira-izquierda;
       mientras frente-libre hacer avanza;
       gira-izquierda;
       guardias (0);




        apagate;
    termina-ejecucion
finalizar-programa
