iniciar-programa
    define-nueva-instruccion g(z) como repetir z veces gira-izquierda;
     define-nueva-instruccion contar2(m) como inicio
             si junto-a-zumbador entonces inicio
                coge-zumbador;
                contar2(sucede(m));
             fin;
             mientras no orientado-al-oeste hacer gira-izquierda;
             avanza;
             repetir m veces coge-zumbador;
             mientras no orientado-al-norte hacer gira-izquierda;
             repetir 3 veces avanza;
             mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
             g(2);
             repetir 3 veces avanza;
             g(2);
             mientras junto-a-zumbador hacer coge-zumbador;
             mientras algun-zumbador-en-la-mochila hacer inicio
                 deja-zumbador;
                     avanza;
                     si ningun-zumbador-en-la-mochila entonces inicio
                         g(2);
                         avanza;
                         coge-zumbador;
                         g(2);
                         avanza;
                         deja-zumbador;
                         apagate;
                     fin;
                     deja-zumbador;
                     g(2);
                     avanza;
                      g(2);
             fin;
                mientras no orientado-al-norte hacer gira-izquierda;
                     mientras junto-a-zumbador hacer coge-zumbador;
                     avanza;
                     g(1);
                     mientras frente-libre hacer avanza;
                     g(1);
                     mientras frente-libre hacer avanza;
                     si ningun-zumbador-en-la-mochila entonces inicio
                          g(2);
                         avanza;
                         coge-zumbador;
                         g(2);
                         avanza;
                         deja-zumbador;
                         apagate;
                     fin;
                     mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                     apagate;
         fin;
         define-nueva-instruccion contar(n) como inicio
             si junto-a-zumbador entonces inicio
             coge-zumbador;
             contar(sucede(n));
             fin;
             repetir n veces deja-zumbador;
             g(1);
             avanza;
             mientras junto-a-zumbador hacer inicio
             repetir n veces inicio
             si no junto-a-zumbador entonces inicio
                  mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                  contar2(0);
                    fin;
                    si junto-a-zumbador entonces coge-zumbador;
                  fin;
             si junto-a-zumbador entonces inicio
                 mientras algun-zumbador-en-la-mochila hacer inicio
                 mientras no orientado-al-norte hacer gira-izquierda;
                 repetir 3 veces avanza;
                 mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                 g(2);
                 repetir 3 veces avanza;
                 fin;
                 mientras junto-a-zumbador hacer inicio
                     mientras junto-a-zumbador hacer coge-zumbador;
                     mientras algun-zumbador-en-la-mochila hacer inicio
                     mientras no orientado-al-norte hacer gira-izquierda;
                     si algun-zumbador-en-la-mochila entonces deja-zumbador;
                     avanza;
                     si algun-zumbador-en-la-mochila entonces deja-zumbador;

                     g(2);
                     avanza;
                      g(2);
                     fin;
                        mientras no orientado-al-norte hacer gira-izquierda;
                     mientras junto-a-zumbador hacer coge-zumbador;
                     avanza;
                     g(1);
                     mientras frente-libre hacer avanza;
                     g(1);
                     mientras frente-libre hacer avanza;
                     mientras algun-zumbador-en-la-mochila y no junto-a-zumbador hacer deja-zumbador;
                     si junto-a-zumbador entonces inicio
                         mientras no orientado-al-norte hacer gira-izquierda;
                         avanza;
                         mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                         g(2);
                         avanza;
                         mientras junto-a-zumbador hacer coge-zumbador;
                         g(2);
                         avanza;
                         mientras junto-a-zumbador hacer inicio
                             coge-zumbador;
                             g(2);
                             avanza;
                             deja-zumbador;
                             g(2);
                             avanza;
                         fin;
                         apagate;
                     fin;
                     apagate;
                 fin;
                 si no junto-a-zumbador entonces apagate;
             fin;
             Si no junto-a-zumbador entonces inicio
                 g(2);
                 avanza;
                 mientras junto-a-zumbador hacer coge-zumbador;
                 apagate;
             fin;
         fin;
         si no junto-a-zumbador entonces inicio
             g(2);
             avanza;
             mientras no orientado-al-norte hacer gira-izquierda;
             mientras junto-a-zumbador hacer coge-zumbador;
             mientras algun-zumbador-en-la-mochila hacer inicio
                 deja-zumbador;
                 avanza;
                 g(2);
             fin;
             apagate;
         fin;
       fin;
    define-nueva-instruccion balanza como inicio
        mientras junto-a-zumbador y orientado-al-norte hacer inicio
            si junto-a-zumbador entonces inicio
                mientras junto-a-zumbador hacer coge-zumbador;
                avanza;
                balanza;
            fin;
            si no junto-a-zumbador y frente-libre entonces inicio
                g(2);
                mientras frente-libre hacer avanza;
                g(1);
                si frente-bloqueado entonces inicio
                    g(1);
                    avanza;
                    mientras no orientado-al-oeste hacer gira-izquierda;
                    mientras frente-libre hacer avanza;
                    g(1);
                    mientras frente-libre hacer avanza;
                    g(1);
                    mientras junto-a-zumbador y frente-libre hacer avanza;
                    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                    sal-de-instruccion;
                fin;
               mientras no junto-a-zumbador y frente-libre hacer avanza;
                    si frente-bloqueado y no junto-a-zumbador entonces inicio
                    g(1);
                    avanza;
                    mientras no orientado-al-oeste hacer gira-izquierda;
                    mientras frente-libre hacer avanza;
                    g(1);
                    mientras frente-libre hacer avanza;
                    g(1);
                    mientras junto-a-zumbador y frente-libre hacer avanza;
                    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                    sal-de-instruccion;
                fin;
               si junto-a-zumbador entonces g(1);
            fin;
        fin;
    fin;
    inicia-ejecucion
        mientras no orientado-al-norte hacer gira-izquierda;
        repetir 5 veces avanza;
        g(3);
        avanza;
        g(3);
        avanza;
        g(1);
        mientras no junto-a-zumbador y frente-libre hacer avanza;
        si junto-a-zumbador entonces inicio
            mientras no orientado-al-norte hacer gira-izquierda;
            balanza;
        fin;
        si derecha-bloqueada y orientado-al-este y junto-a-zumbador entonces inicio
            g(1);
            repetir 5 veces avanza;
            g(3);
            repetir 7 veces avanza;
            g(3);
            avanza;
            g(1);
            mientras no junto-a-zumbador y frente-libre hacer avanza;
            si junto-a-zumbador entonces inicio
                mientras no orientado-al-norte hacer gira-izquierda;
                balanza;
            fin;
        fin;
        si frente-bloqueado y orientado-al-este entonces inicio
            g(1);
            avanza;
            g(3);
            repetir 3 veces avanza;
            g(3);
            avanza;
            si derecha-libre entonces inicio
                g(2);
                avanza;
                mientras no orientado-al-oeste hacer gira-izquierda;
                mientras frente-libre hacer avanza;
                g(1);
                mientras frente-libre hacer avanza;
                contar(0);
            fin;
            g(1);
            mientras no junto-a-zumbador y frente-libre hacer avanza;                          
            si junto-a-zumbador entonces inicio
                mientras no orientado-al-norte hacer gira-izquierda;
                balanza;
            fin;
        fin;
        mientras no orientado-al-oeste hacer gira-izquierda;
       si frente-libre entonces avanza;
        mientras no orientado-al-sur hacer gira-izquierda;
        contar(0);
        apagate;
    termina-ejecucion
finalizar-programa
