iniciar-programa
 define-nueva-instruccion gira(n) como inicio
      repetir n veces inicio
      gira-izquierda;
  fin;
  fin;
  define-nueva-instruccion ir-por-el como inicio
     mientras frente-libre y izquierda-bloqueada hacer inicio
            avanza;
         si izquierda-libre entonces
            gira-izquierda;
            fin;
         mientras frente-libre y orientado-al-oeste hacer inicio
               avanza;
            si frente-bloqueado y orientado-al-oeste entonces
                     gira-izquierda;
                  mientras frente-libre y orientado-al-sur hacer
                     avanza;



             fin;
             fin;
    define-nueva-instruccion regresar como inicio


    si frente-bloqueado y orientado-al-sur y junto-a-zumbador entonces inicio
                       coge-zumbador;
                         gira(2);
             fin;
        mientras frente-libre y orientado-al-norte hacer inicio
              avanza;
              fin;
           si frente-bloqueado y orientado-al-norte entonces inicio
              si frente-bloqueado y derecha-bloqueada entonces inicio
                   gira(1);
                   avanza;
                   gira(3);
                   avanza;
                   gira(3);
                   avanza;
                   mientras derecha-bloqueada hacer inicio
                      avanza;
                      fin;
                   si derecha-libre entonces
                      gira(3);
                      mientras frente-libre hacer
                      avanza;
                      si frente-bloqueado y orientado-al-sur y algun-zumbador-en-la-mochila entonces inicio
                    deja-zumbador;
                      apagate;
                    fin;

                   fin;
               gira(3);
               avanza;
               gira(3);
             fin;

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

               si frente-bloqueado y orientado-al-sur y izquierda-bloqueada entonces inicio

                        gira(3);
                        avanza;
                        gira(1);
                        avanza;
                        gira(1);
                        avanza;
                       mientras derecha-bloqueada hacer inicio
                          avanza;

                         si derecha-libre entonces inicio
                              gira(3);
                           mientras frente-libre hacer
                              avanza;
                           si frente-bloqueado y orientado-al-sur y algun-zumbador-en-la-mochila entonces inicio
                               deja-zumbador;
                                  apagate;
                    fin;
                    fin;
                    fin;


                        fin;


                 si frente-bloqueado y orientado-al-sur entonces
                        gira(1);
                        avanza;
                        gira(1);
                        regresar;

               fin;













    inicia-ejecucion
    si orientado-al-este entonces
          gira(1);
    si orientado-al-sur entonces
       gira(2);
    si orientado-al-oeste entonces
       gira(3);
   si orientado-al-norte entonces inicio
         ir-por-el;
         regresar;
         fin;


        apagate;
    termina-ejecucion
finalizar-programa
