iniciar-programa
  define-nueva-instruccion gira-derecha como repetir 3 veces gira-izquierda;
  inicia-ejecucion

   si orientado-al-sur entonces inicio
   gira-izquierda;
   fin;
 si orientado-al-oeste entonces inicio
 repetir 2 veces gira-izquierda;
 fin;
si orientado-al-norte entonces inicio
gira-derecha;
fin;

    mientras orientado-al-este hacer inicio

        mientras no-junto-a-zumbador hacer avanza;

            si orientado-al-este y junto-a-zumbador entonces gira-izquierda;

     fin;

        mientras junto-a-zumbador y orientado-al-norte hacer inicio

              avanza;
              si no-junto-a-zumbador entonces inicio
              gira-izquierda;
              mientras frente-libre hacer avanza;
              si frente-bloqueado y orientado-al-oeste entonces gira-izquierda;
              mientras orientado-al-sur y frente-libre hacer avanza;
              si orientado-al-sur y frente-bloqueado entonces inicio
              mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
              si ningun-zumbador-en-la-mochila entonces apagate;
              fin;
              fin;

              si orientado-al-norte y junto-a-zumbador entonces gira-derecha;
              si junto-a-zumbador entonces avanza;

                  mientras junto-a-zumbador hacer inicio
                    mientras frente-libre y junto-a-zumbador hacer inicio
                    si junto-a-zumbador entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                    fin;
                    fin;
                  fin;

             mientras no-junto-a-zumbador  hacer inicio
               repetir 2 veces gira-izquierda;
               avanza;
                 si no-junto-a-zumbador entonces inicio
               gira-derecha;
               deja-zumbador;
               avanza;

                mientras junto-a-zumbador hacer inicio
                    mientras frente-libre y junto-a-zumbador hacer inicio
                    si junto-a-zumbador entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                    fin;
                    fin;
                  fin;

                mientras no-junto-a-zumbador  hacer inicio
               repetir 2 veces gira-izquierda;
               mientras no-junto-a-zumbador hacer avanza;

             si junto-a-zumbador y orientado-al-sur entonces inicio
             gira-derecha;
             coge-zumbador;
             mientras frente-libre y no-junto-a-zumbador hacer avanza;

             si junto-a-zumbador y orientado-al-este entonces gira-izquierda;

                          si junto-a-zumbador entonces inicio

             avanza;


             si junto-a-zumbador y orientado-al-oeste entonces inicio

               mientras junto-a-zumbador hacer inicio
                    mientras frente-libre y junto-a-zumbador hacer inicio
                    si junto-a-zumbador entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                    fin;
                    fin;
                  fin;


              fin;
              fin;



                si no-junto-a-zumbador entonces inicio
              repetir 2 veces gira-izquierda;


               avanza;
               si orientado-al-este y no-junto-a-zumbador entonces inicio

                   gira-izquierda;
                   deja-zumbador;
                   avanza;
                   si junto-a-zumbador entonces inicio
                   mientras junto-a-zumbador hacer inicio
                    mientras frente-libre y junto-a-zumbador hacer inicio
                    si junto-a-zumbador entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                    fin;
                    fin;
                  fin;
                  fin;

                  si no-junto-a-zumbador entonces inicio

                 repetir 2 veces gira-izquierda;
                 mientras no-junto-a-zumbador hacer avanza;
                 si orientado-al-sur y junto-a-zumbador entonces inicio
                 gira-izquierda;
                 coge-zumbador;
                 mientras no-junto-a-zumbador hacer avanza;
                 si junto-a-zumbador entonces gira-izquierda;
                 fin;
                 fin;



               fin;




              mientras no-junto-a-zumbador hacer inicio
              mientras no-junto-a-zumbador hacer avanza;
              si junto-a-zumbador y orientado-al-este entonces gira-izquierda;
              fin;


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

                mientras no-junto-a-zumbador  hacer inicio
               repetir 2 veces gira-izquierda;
               mientras no-junto-a-zumbador hacer avanza;

               fin;

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

               fin;
               fin;




             fin;

             fin;

             fin;





            mientras no-junto-a-zumbador hacer avanza;

            fin;

             mientras orientado-al-oeste y junto-a-zumbador hacer inicio

                 avanza;

                mientras junto-a-zumbador y orientado-al-oeste y frente-libre y no-orientado-al-norte hacer inicio
                    mientras frente-libre y junto-a-zumbador hacer inicio
                    si junto-a-zumbador  y orientado-al-oeste entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                           fin;
                           fin;
                           fin;

                           mientras no-junto-a-zumbador  hacer inicio
               repetir 2 veces gira-izquierda;

               avanza;
                 si no-junto-a-zumbador entonces inicio
               gira-izquierda;
               deja-zumbador;
               avanza;

                mientras junto-a-zumbador hacer inicio
                    mientras frente-libre y junto-a-zumbador hacer inicio
                    si junto-a-zumbador entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                    fin;
                    fin;
                  fin;

                mientras no-junto-a-zumbador  hacer inicio
               repetir 2 veces gira-izquierda;
               mientras no-junto-a-zumbador hacer avanza;

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

             fin;
             fin;
             fin;

              si no orientado-al-norte entonces inicio
               mientras orientado-al-oeste y frente-bloqueado y junto-a-zumbador hacer inicio


                    si junto-a-zumbador entonces inicio gira-derecha;
                    avanza;
                    fin;

                      mientras junto-a-zumbador hacer inicio
                    mientras frente-libre y junto-a-zumbador y izquierda-bloqueada hacer inicio
                    si junto-a-zumbador entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                    fin;
                    fin;
                  fin;


                   mientras no-junto-a-zumbador  hacer inicio
               repetir 2 veces gira-izquierda;
               avanza;
                              mientras no-junto-a-zumbador hacer avanza;
               fin;

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

             fin;








                mientras no-junto-a-zumbador  hacer  inicio


               repetir 2 veces gira-izquierda;

               avanza;
                 si no-junto-a-zumbador y no-orientado-al-norte entonces
               gira-izquierda;
               deja-zumbador;
               avanza;

                mientras junto-a-zumbador hacer inicio
                    mientras frente-libre y junto-a-zumbador hacer inicio
                    si junto-a-zumbador entonces inicio
                    mientras junto-a-zumbador hacer
                    coge-zumbador; avanza;
                    fin;
                    fin;
                  fin;

                mientras no-junto-a-zumbador  hacer inicio
               repetir 2 veces gira-izquierda;
               mientras no-junto-a-zumbador hacer avanza;

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

             fin;
               fin;
              fin;
              fin;

             fin;

           si no-orientado-al-norte y no orientado-al-oeste entonces gira-izquierda;

           si orientado-al-oeste y no-junto-a-zumbador entonces inicio
           repetir 2 veces gira-izquierda;
           mientras no-junto-a-zumbador hacer avanza;
           si junto-a-zumbador entonces gira-izquierda
           fin;

          fin;





        apagate;
    termina-ejecucion
finalizar-programa
