iniciar-programa
    define-nueva-instruccion gira como
        inicio
          si frente-bloqueado entonces
            inicio
              repetir 2 veces gira-izquierda;
              mientras frente-libre hacer avanza;
              si izquierda-bloqueada entonces sal-de-instruccion;
              si izquierda-libre entonces
                inicio
                  gira-izquierda;
                  avanza;
                  gira-izquierda;
                fin;
            fin;
        fin;

    define-nueva-instruccion toma2 como
        inicio
          mientras orientado-al-norte hacer
            inicio
              mientras no-junto-a-zumbador y frente-libre hacer avanza;
              si junto-a-zumbador entonces
                inicio
                  coge-zumbador;
                  si no-junto-a-zumbador entonces
                     inicio
                       deja-zumbador;
                       si frente-bloqueado entonces
                         inicio
                           gira;
                           sal-de-instruccion;
                        fin;
                      si frente-libre entonces avanza;
                      sal-de-instruccion;
                     fin;
              si junto-a-zumbador entonces coge-zumbador;
                  fin;
              si frente-bloqueado entonces
                inicio
                  gira;
                  sal-de-instruccion;
                fin;
              si frente-libre entonces avanza;
            fin;
         toma2;
        fin;

    define-nueva-instruccion fila2 como
        inicio
          toma2;
          si orientado-al-sur y izquierda-bloqueada entonces sal-de-instruccion;
          fila2;
        fin;

    define-nueva-instruccion toma1 como
        inicio
          mientras orientado-al-norte hacer
            inicio
              mientras no-junto-a-zumbador y frente-libre hacer avanza;
              si junto-a-zumbador entonces
                inicio
                  coge-zumbador;
                  si no-junto-a-zumbador entonces
                    inicio
                      si frente-bloqueado entonces
                        inicio
                          gira;
                          sal-de-instruccion;
                        fin;
                    fin;
                  si junto-a-zumbador entonces
                    inicio
                      coge-zumbador;
                      si no-junto-a-zumbador entonces
                        inicio
                          repetir 2 veces deja-zumbador;
                          si frente-bloqueado entonces
                            inicio
                              gira;
                              sal-de-instruccion;
                            fin;
                           si frente-libre entonces
                             inicio
                               avanza;
                               sal-de-instruccion;
                             fin;
                        fin;
                       si junto-a-zumbador entonces
                         inicio
                           deja-zumbador;
                           si frente-bloqueado entonces
                             inicio
                               gira;
                               sal-de-instruccion;
                             fin;
                            si frente-libre entonces
                              inicio
                                avanza;
                                sal-de-instruccion;
                              fin;
                         fin;
                    fin;
           fin;
                si frente-bloqueado entonces
                  inicio
                     gira;
                     sal-de-instruccion;
                  fin;
              fin;
          toma1;
        fin;

    define-nueva-instruccion fila1 como
        inicio
            toma1;
            si orientado-al-sur y izquierda-bloqueada entonces sal-de-instruccion;
            fila1;
        fin;

    define-nueva-instruccion todo como
        inicio
        mientras no-orientado-al-oeste hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        gira-izquierda;
        mientras frente-libre hacer avanza;
        repetir 2 veces gira-izquierda;
        fila2;
        repetir 3 veces gira-izquierda;
        mientras frente-libre hacer avanza;
        repetir 2 veces gira-izquierda;
        avanza;
        gira-izquierda;
        mientras algun-zumbador-en-la-mochila hacer
          inicio
            repetir 2 veces deja-zumbador;
            si algun-zumbador-en-la-mochila entonces avanza;
          fin;
        gira-izquierda;
        mientras frente-libre hacer avanza;
        gira-izquierda;
        mientras frente-libre hacer avanza;
        repetir 2 veces gira-izquierda;
        fila1;
        repetir 3 veces gira-izquierda;
        mientras frente-libre hacer avanza;
        repetir 3 veces gira-izquierda;
        si algun-zumbador-en-la-mochila entonces
          inicio
            mientras algun-zumbador-en-la-mochila hacer
              inicio
                si algun-zumbador-en-la-mochila entonces deja-zumbador;
                si algun-zumbador-en-la-mochila entonces avanza;
              fin;
          fin;
        fin;

    inicia-ejecucion
        todo;                 
        apagate;
    termina-ejecucion
finalizar-programa
