iniciar-programa
   define-nueva-instruccion gira-derecha como inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
     fin;

    define-nueva-instruccion media-vuelta como inicio
 gira-izquierda;
 gira-izquierda;
 fin;

      define-nueva-instruccion prueba como inicio
       si junto-a-zumbador entonces inicio
         Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
         repetir 1 veces  deja-zumbador;
         sal-de-instruccion;
           fin;


          Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
          repetir 2 veces deja-zumbador;
          sal-de-instruccion;
           fin;


             Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
           repetir 3 veces deja-zumbador;
           sal-de-instruccion;
           fin;

             Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
            repetir 4 veces deja-zumbador;
            sal-de-instruccion;
           fin;

              Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
            repetir 5 veces deja-zumbador;
            sal-de-instruccion;
           fin;


           Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
            repetir 6 veces deja-zumbador;
            sal-de-instruccion;
           fin;

             Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
            repetir 7 veces deja-zumbador;
            sal-de-instruccion;
           fin;

            Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
            repetir 8 veces deja-zumbador;
            sal-de-instruccion;
           fin;


           si junto-a-zumbador entonces inicio
           repetir 8 veces deja-zumbador;
           sal-de-instruccion;
            fin;
            fin;
            fin;


     define-nueva-instruccion mina como inicio

       si orientado-al-norte y frente-libre entonces inicio
       Si orientado-al-norte y frente-libre entonces inicio
        avanza;
        si no junto-a-zumbador entonces inicio
        deja-zumbador;
        fin sino si junto-a-zumbador entonces inicio
         prueba;
         fin;
        fin
        sino si frente-bloqueado y orientado-al-norte entonces inicio
         media-vuelta;
          fin;
        si derecha-libre y orientado-al-norte entonces inicio
         gira-derecha;

         si frente-libre y orientado-al-este entonces avanza;
          si no junto-a-zumbador entonces inicio
        deja-zumbador;
        fin sino si junto-a-zumbador entonces inicio
         prueba;
                                           (*prueba de dejar un zumbadador*)
         fin;
         media-vuelta;
         avanza;
         gira-izquierda;
         avanza;
         fin
         sino si derecha-bloqueada y orientado-al-norte  entonces inicio
          media-vuelta;
          avanza;
          fin;
          si no orientado-al-norte entonces
          media-vuelta;
       fin
       sino si frente-bloqueado entonces inicio
        media-vuelta;
        fin;

       si orientado-al-norte entonces inicio
        Si orientado-al-norte y frente-libre entonces inicio
        avanza;
         fin
         sino si frente-bloqueado entonces inicio
          media-vuelta;
          fin;
        si izquierda-libre y orientado-al-norte entonces inicio
         gira-izquierda;

         si frente-libre y orientado-al-oeste entonces avanza;
          si no junto-a-zumbador entonces inicio
        deja-zumbador;
        fin sino si junto-a-zumbador entonces inicio
         prueba;
         fin;
         media-vuelta;
         avanza;
         gira-derecha;
         avanza;
         fin
         sino si izquierda-bloqueada y orientado-al-norte entonces inicio
          media-vuelta;
          avanza;
          fin;
          si no orientado-al-sur entonces
          media-vuelta;
           fin;

       si orientado-al-sur y frente-libre entonces inicio
          si frente-libre y orientado-al-sur entonces inicio
            avanza;
            fin
            sino si frente-bloqueado y orientado-al-sur entonces inicio
            media-vuelta;
             gira-izquierda;
             fin;

             si no junto-a-zumbador y orientado-al-sur entonces inicio
            deja-zumbador;
            fin
            sino si junto-a-zumbador y orientado-al-sur entonces inicio
             prueba;
             fin;



           si derecha-libre y orientado-al-sur  entonces inicio
              gira-derecha;
              avanza;
              fin
              sino si derecha-bloqueada y orientado-al-sur entonces inicio
               media-vuelta;
               avanza;
               media-vuelta;
               fin;
               si no junto-a-zumbador y orientado-al-oeste entonces inicio
        deja-zumbador;
        fin
        sino si junto-a-zumbador y orientado-al-oeste entonces inicio
         prueba;
         fin;
         si orientado-al-oeste entonces inicio
              media-vuelta;
              avanza;
              gira-izquierda;
              avanza;
             media-vuelta;
             fin;
            fin
            sino si frente-bloqueado y orientado-al-sur entonces inicio
            media-vuelta;
             gira-izquierda;
             fin;



         si orientado-al-sur y izquierda-libre entonces inicio
            si frente-libre y orientado-al-sur y izquierda-libre entonces inicio
            avanza;
            fin
            sino si orientado-al-sur y izquierda-bloqueada entonces inicio
             gira-derecha;

             fin;

           si izquierda-libre y orientado-al-sur  entonces inicio
              gira-izquierda;
              avanza;
              fin
              sino si izquierda-bloqueada  y orientado-al-sur  entonces inicio
               media-vuelta;
               avanza;
               gira-derecha;

               fin;
              si no junto-a-zumbador y orientado-al-este  entonces inicio
              deja-zumbador;
              fin
              sino si junto-a-zumbador y orientado-al-este   entonces inicio
               prueba;
               fin;
               si orientado-al-este entonces inicio
              media-vuelta;
              avanza;
              gira-derecha;
              avanza;
              gira-izquierda;
              fin;

            fin
            sino si orientado-al-sur y izquierda-bloqueada entonces inicio
              gira-derecha;
              fin;

            si orientado-al-oeste y frente-libre entonces inicio
             si frente-libre y orientado-al-oeste entonces inicio
               avanza;
               fin
               sino si frente-bloqueado entonces inicio
                media-vuelta;

                fin;
              si no junto-a-zumbador y orientado-al-oeste  entonces inicio
               deja-zumbador;
               fin
               sino si junto-a-zumbador y orientado-al-oeste entonces inicio
                prueba;
                fin;
               si orientado-al-oeste entonces inicio
                media-vuelta;
                avanza;

                fin;
                fin
                sino si frente-bloqueado y orientado-al-oeste entonces inicio
                 media-vuelta;
                 fin;


           si orientado-al-este y frente-libre  entonces inicio
             si frente-libre y orientado-al-este entonces inicio
               avanza;
               fin
               sino si frente-bloqueado entonces inicio
                media-vuelta;

               fin;
              si no junto-a-zumbador y orientado-al-este entonces inicio
               deja-zumbador;
               fin
               sino si junto-a-zumbador y orientado-al-este entonces inicio
                prueba;
                fin;
                si orientado-al-este entonces inicio
                media-vuelta;
                avanza;
                mientras no orientado-al-norte hacer inicio
                gira-izquierda;
                 fin;
                 sal-de-instruccion;
                fin;




            fin
            sino si frente-bloqueado y orientado-al-este entonces inicio
              gira-izquierda;
              fin;

              fin;
      define-nueva-instruccion checa como inicio
         si junto-a-zumbador entonces inicio
         Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
         repetir 1 veces  deja-zumbador;
         sal-de-instruccion;
           fin;


          Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
          repetir 1 veces deja-zumbador;
          sal-de-instruccion;
           fin;


             Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
           repetir 2 veces deja-zumbador;
           sal-de-instruccion;
           fin;

             Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
            repetir 3 veces deja-zumbador;
            sal-de-instruccion;
           fin;

            Si junto-a-zumbador entonces inicio
          coge-zumbador;
          fin
          sino si no junto-a-zumbador entonces inicio
            repetir 4 veces deja-zumbador;
            sal-de-instruccion;
           fin;


           si junto-a-zumbador entonces inicio
           repetir 5 veces deja-zumbador;
           mina;
            fin;
            fin;
            fin;



    define-nueva-instruccion reparte como inicio
      mientras no junto-a-zumbador y orientado-al-norte y frente-libre hacer inicio
         avanza;
         fin;
       si frente-bloqueado y orientado-al-norte y no junto-a-zumbador entonces inicio
        media-vuelta;
        fin;

         mientras orientado-al-sur y frente-libre hacer inicio
         avanza;
         fin;

        si frente-bloqueado y orientado-al-sur entonces inicio
          gira-izquierda;
          si frente-libre entonces inicio
             avanza;
             fin
             sino si frente-bloqueado y orientado-al-este y derecha-bloqueada entonces inicio
             apagate;
             fin;
           si orientado-al-este entonces
           gira-izquierda;
           Reparte;
           fin;

          si junto-a-zumbador entonces inicio
           checa;
         fin;



             si frente-libre entonces inicio
               avanza;
               reparte;
               fin
               sino si frente-bloqueado entonces inicio
                  media-vuelta;
                  reparte;
                  fin;


        fin;






        define-nueva-instruccion ubicate como
 inicio
   mientras no orientado-al-oeste hacer
   inicio
    gira-izquierda;
   fin;
    mientras frente-libre y orientado-al-oeste hacer
    inicio
      avanza;
    fin;
      si frente-bloqueado y orientado-al-oeste entonces
      inicio
       gira-izquierda;
      fin;

       mientras frente-libre y orientado-al-sur hacer
        inicio
         avanza;
         fin;
        si frente-bloqueado y orientado-al-sur entonces
         inicio
          media-vuelta;
          fin;
    fin;

    inicia-ejecucion
    ubicate;
     mientras no orientado-al-norte hacer inicio
        gira-izquierda;
       fin;
     Reparte;
        apagate;
    termina-ejecucion
finalizar-programa

