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 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;







 define-nueva-instruccion estrella como
      inicio
      si frente-libre y orientado-al-norte entonces
      inicio
       avanza;
         fin
         sino si frente-bloqueado entonces inicio
         media-vuelta;
          gira-izquierda;
        fin;
      si no-junto-a-zumbador  y orientado-al-norte entonces
       inicio
       deja-zumbador;
         fin
       sino si junto-a-zumbador entonces inicio
        fin;



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

        fin;




        si frente-libre y orientado-al-este  entonces
      inicio
       avanza;
       fin
       sino si frente-bloqueado y izquierda-bloqueada y orientado-al-este entonces inicio
         gira-derecha;
         fin;
       si no-junto-a-zumbador entonces
       inicio
       deja-zumbador;
         fin
       sino si junto-a-zumbador entonces inicio
        fin;

       si junto-a-zumbador   y orientado-al-este entonces inicio
       media-vuelta;
        avanza;
        si izquierda-libre entonces inicio
        gira-izquierda;

          fin;
          fin;




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

           media-vuelta;
            fin;

          fin;
           fin;





        si frente-libre y orientado-al-oeste entonces
      inicio
       avanza;
       si no-junto-a-zumbador entonces
       inicio
       deja-zumbador;
         fin
       sino si junto-a-zumbador entonces inicio
         fin;

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

          fin;
          fin;
          fin;




        si junto-a-zumbador y orientado-al-norte entonces inicio
        coge-zumbador;

        si junto-a-zumbador y orientado-al-norte   entonces inicio
         estrella;
         fin
         sino si no junto-a-zumbador entonces inicio
          deja-zumbador;
          si frente-libre entonces
          avanza;

          fin;

          fin;






           fin;












       define-nueva-instruccion regresa como inicio
          mientras frente-libre y orientado-al-sur hacer
         inicio
          avanza;
          fin;
         si frente-bloqueado entonces inicio
          gira-derecha;
          mientras frente-libre y orientado-al-oeste  hacer
          inicio
           avanza;

            fin;

            fin;
            fin;



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

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

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

                 fin;
                 fin;
                 fin;
                 si orientado-al-este entonces inicio
            gira-izquierda;
             reparte;
             fin;


            fin;
            fin;

      si junto-a-zumbador y orientado-al-norte entonces inicio
      coge-zumbador;
       si junto-a-zumbador entonces inicio
        estrella;

         reparte;
        fin
        sino si no junto-a-zumbador entonces inicio
         deja-zumbador;
         si frente-libre entonces inicio
         avanza;
         reparte;
         fin

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


      define-nueva-instruccion coloca como inicio

       si frente-bloqueado y orientado-al-oeste  entonces inicio
        gira-derecha;
        fin;
            mientras frente-libre y no junto-a-zumbador y orientado-al-norte  y no junto-a-zumbador 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 frente-libre y orientado-al-sur  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 entonces inicio
            gira-derecha;
            regresa;
            fin;
            si orientado-al-este entonces inicio
            gira-izquierda;
             coloca;
            fin;
            fin;

             mientras junto-a-zumbador y orientado-al-norte hacer inicio
              deja-zumbador;
              si frente-libre entonces inicio
              avanza;
              coloca;

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







     define-nueva-instruccion coge como
     inicio
    si junto-a-zumbador entonces
     inicio
      coge-zumbador;
      coge;
     si orientado-al-norte o orientado-al-sur o orientado-al-este o orientado-al-oeste entonces   inicio
      coloca;
       reparte;
       fin;

      fin;
      fin;

     define-nueva-instruccion deja-zumbadores como inicio
     si frente-bloqueado y orientado-al-este entonces inicio
      media-vuelta;
        mientras  frente-libre y orientado-al-oeste hacer inicio
         avanza;
        fin;
        fin;
        fin;





     define-nueva-instruccion cuenta como inicio

       mientras frente-libre y no-junto-a-zumbador y orientado-al-norte o orientado-al-sur hacer
        inicio
         avanza;
       fin;

         si junto-a-zumbador entonces inicio
           coge-zumbador;
           si orientado-al-norte y frente-libre  entonces inicio
           avanza;
            fin;
           cuenta;
           deja-zumbador;
           fin;

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

           si frente-bloqueado y orientado-al-sur entonces
            inicio
            gira-izquierda;
            si frente-libre entonces inicio
            avanza;
            fin
            sino si frente-bloqueado entonces inicio
              deja-zumbadores;
              fin;
             si orientado-al-este entonces inicio
            gira-izquierda;
             cuenta;
             fin;

            fin;
            fin;
            fin;
              fin;




    inicia-ejecucion

    ubicate;

     si frente-libre entonces inicio
    coge;
     fin
     sino si frente-bloqueado entonces inicio
      repetir 23 veces deja-zumbador;
      apagate;
      fin;

    reparte;
   mientras no orientado-al-norte hacer inicio
    gira-izquierda;
    fin;

     cuenta;

        apagate;
    termina-ejecucion
finalizar-programa
