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

mientras algun-zumbador-en-la-mochila hacer inicio

    Mientras orientado-al-norte y frente-libre hacer inicio
     Mientras orientado-al-norte y frente-libre hacer avanza;
      si orientado-al-norte y frente-bloqueado entonces gira-derecha;
      fin;


              mientras  no junto-a-zumbador y orientado-al-este hacer inicio
               mientras frente-libre y no junto-a-zumbador y orientado-al-este hacer avanza;
               si orientado-al-este y frente-bloqueado y no-junto-a-zumbador entonces inicio
                 gira-derecha;
                 mientras izquierda-bloqueada Y FRENTE-LIBRE hacer INICIO
                 mientras izquierda-bloqueada Y FRENTE-LIBRE hacer avanza;
                 SI ORIENTADO-AL-SUR Y FRENTE-BLOQUEADO Y IZQUIERDA-BLOQUEADA ENTONCES APAGATE;
                 FIN;
                    si izquierda-libre entonces inicio
                    gira-izquierda;
                    avanza;
                    gira-izquierda;
                    avanza;
                    gira-derecha;
                    fin;
                fin;
               fin;

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

        si orientado-al-este entonces repetir 2 veces gira-izquierda;
            mientras orientado-al-oeste hacer inicio
               mientras orientado-al-oeste y frente-libre hacer avanza;
               si orientado-al-oeste y frente-bloqueado y izquierda-libre entonces inicio
                   gira-izquierda;
                   avanza;
                   deja-zumbador;
                   repetir 2 veces gira-izquierda;
                   avanza;
                   gira-derecha;
               fin;
            fin;

          mientras orientado-al-este y frente-libre hacer avanza;
              mientras frente-bloqueado y orientado-al-este hacer inicio
                  gira-derecha;
                  avanza;
                  gira-derecha;
                  si orientado-al-oeste y frente-bloqueado y izquierda-bloqueada y junto-a-zumbador entonces apagate;
                  fin;
                      mientras  orientado-al-oeste y frente-libre y no-junto-a-zumbador hacer inicio
                          deja-zumbador;
                          avanza;
                      fin;
                      mientras orientado-al-oeste y junto-a-zumbador hacer inicio
                          repetir 2 veces gira-izquierda;

                          mientras junto-a-zumbador y frente-libre hacer inicio
                              mientras junto-a-zumbador y frente-libre hacer avanza;
                              si frente-bloqueado y orientado-al-este entonces apagate;
                          fin;
                          si no-junto-a-zumbador entonces inicio
                              gira-izquierda;
                              mientras frente-libre hacer avanza;
                              si frente-bloqueado entonces gira-derecha;
                          fin;
                      fin;



       fin;

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



  fin;


        apagate;
    termina-ejecucion
finalizar-programa
 