iniciar-programa

            define-nueva-instruccion norte como inicio
                mientras no-orientado-al-norte hacer inicio
                    gira-izquierda;
                fin;
            fin;

            define-nueva-instruccion sur como inicio
                mientras no-orientado-al-sur hacer inicio
                    gira-izquierda;
                fin;
            fin;


            define-nueva-instruccion este como inicio
                mientras no-orientado-al-este hacer inicio
                    gira-izquierda;
                fin;
            fin;


            define-nueva-instruccion oeste como inicio
                mientras no-orientado-al-oeste hacer inicio
                    gira-izquierda;
                fin;
            fin;

            define-nueva-instruccion recoge como inicio
                mientras junto-a-zumbador hacer inicio
                mientras junto-a-zumbador hacer inicio
                    coge-zumbador;
                fin;
                si frente-libre entonces inicio
                    avanza;
                fin;
                fin;
              fin;

             define-nueva-instruccion ir11 como inicio
                 oeste;
               mientras frente-libre hacer inicio
                   avanza;
               fin;
                   sur;
               mientras frente-libre hacer inicio
                   avanza;
               fin;
             fin;

             define-nueva-instruccion deja-todos como inicio
                 mientras algun-zumbador-en-la-mochila hacer inicio
                     deja-zumbador;
                 fin;
              fin;

             define-nueva-instruccion cambia-columna como inicio
                     sur;
                 mientras frente-libre hacer inicio
                     avanza;
                 fin;
                 si izquierda-libre entonces inicio
                     gira-izquierda;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                     norte;
                 fin;
             fin;

             define-nueva-instruccion balanza2 como inicio
                      este;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                      sur;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                      norte;
              fin;

            define-nueva-instruccion divide como inicio
                   mientras junto-a-zumbador hacer inicio
                     mientras junto-a-zumbador hacer inicio
                       si junto-a-zumbador entonces inicio
                         coge-zumbador;
                       fin;
                         oeste;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                      si algun-zumbador-en-la-mochila entonces inicio
                         deja-zumbador;
                      fin;
                         este;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                       si junto-a-zumbador entonces inicio
                         coge-zumbador;
                       fin;
                         este;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                      si algun-zumbador-en-la-mochila entonces inicio
                         deja-zumbador;
                      fin;
                         oeste;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                     fin;
                  fin;
              fin;

             define-nueva-instruccion cuenta-segundo(n) como inicio
                 si algun-zumbador-en-la-mochila entonces inicio
                     deja-zumbador;
                     cuenta-segundo(sucede(n));
                 fin sino inicio
                        divide;
                        oeste;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                    repetir n veces inicio
                        si junto-a-zumbador entonces inicio
                            coge-zumbador;
                        fin;
                    fin;
                       si no-junto-a-zumbador entonces inicio
                           este;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                       fin sino inicio
                           norte;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                         mientras algun-zumbador-en-la-mochila hacer inicio
                             deja-zumbador;
                         fin;
                             sur;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                         mientras junto-a-zumbador hacer inicio
                             coge-zumbador;
                         fin;
                         ir11;
                         deja-todos;
                       fin;

                 fin;
             fin;

             define-nueva-instruccion  segundo-monton como inicio
                    recoge;
                    cambia-columna;
                    norte;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                    gira-izquierda;
                 repetir 6 veces inicio
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                 fin;
                    cuenta-segundo(0);
             fin;

             define-nueva-instruccion resta2(n) como  inicio

                      repetir n veces inicio
                          si junto-a-zumbador entonces inicio
                              coge-zumbador;
                          fin;
                      fin;
             si no-junto-a-zumbador entonces inicio
                           este;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                  si frente-libre entonces inicio
                    avanza;
                 fin;
                       fin sino inicio
                           norte;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                         mientras algun-zumbador-en-la-mochila hacer inicio
                             deja-zumbador;
                         fin;
                             sur;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                         mientras junto-a-zumbador hacer inicio
                             coge-zumbador;
                         fin;
                         ir11;
                         deja-todos;
                       fin;
               fin;

             define-nueva-instruccion cuenta-primer(n) como inicio
                 si algun-zumbador-en-la-mochila entonces inicio
                     deja-zumbador;
                     cuenta-primer(sucede(n));
                  fin sino inicio
                      balanza2;
                mientras derecha-libre hacer inicio
                    recoge;
                    cambia-columna;
                fin;
                      segundo-monton;
                   si no-orientado-al-sur entonces inicio
                      resta2(n);
                   fin;
                fin;
             fin;


             define-nueva-instruccion primer-monton como inicio
                    recoge;
                    cambia-columna;
                    norte;
                 si frente-libre entonces inicio
                    avanza;
                 fin;
                    cuenta-primer(0);
             fin;



    inicia-ejecucion

            avanza;
            avanza;
            avanza;
            avanza;
            avanza;
            este;
            avanza;
            sur;
            mientras frente-libre hacer inicio
                avanza;
            fin;
                norte;
        mientras derecha-libre hacer inicio
            recoge;
            cambia-columna;
        fin;
            primer-monton;


        apagate;
    termina-ejecucion
finalizar-programa
