iniciar-programa
define-nueva-instruccion copia(x) como
inicio
        si junto-a-zumbador entonces
        inicio
                coge-zumbador;
                copia(sucede(x));
        fin
        sino
        inicio
                repetir x veces deja-zumbador;
                avanza;
                repetir x veces deja-zumbador;
        fin;
fin;
define-nueva-instruccion intercambia(w) como inicio
         si junto-a-zumbador entonces inicio
                 coge-zumbador;
                 intercambia(sucede(w));
         fin
         sino
         inicio
                 avanza;
                 repetir 2 veces gira-izquierda;
                 copia(0);
                 repetir 2 veces
                 gira-izquierda;
                 avanzA;
                 repetir 2 veces gira-izquierda;
                 mientras junto-a-zumbador hacer coge-zumbador;
                 repetir w veces
                 deja-zumbador;
         fin;
fin;
    inicia-ejecucion
      mientras algun-zumbador-en-la-mochila hacer
      inicio
        avanza;
        si no-junto-a-zumbador entonces
        inicio
            repetir 2 veces
                gira-izquierda;
            avanza;
            repetir 3 veces
                gira-izquierda;
           avanza;
           avanza;
           repetir 2 veces gira-izquierda;
           copia(0);
            apagate;
        fin;
        repetir 2 veces gira-izquierda;
        avanza;
        repetir 2 veces gira-izquierda;
        mientras frente-libre y junto-a-zumbador hacer
        inicio
                avanza;
                gira-izquierda;
                copia(0);
                repetir 2 veces inicio
                gira-izquierda;
                avanza;
                fin;
                repetir 2 veces
                gira-izquierda;
                copia(0);
                repetir 3 veces gira-izquierda;
                mientras junto-a-zumbador hacer
                inicio
                        coge-zumbador;
                        avanza;
                        si junto-a-zumbador entonces
                        coge-zumbador;
                        repetir 2 veces gira-izquierda;
                        avanzA;
                        repetir 2 veces gira-izquierda;
                fin;
                avanza;
                si junto-a-zumbador entonces
                inicio
                        mientras junto-a-zumbador hacer
                            coge-zumbador;
                       repetir 3 veces gira-izquierda;
                       avanza;
                       repetir 3 veces gira-izquierda;
                       intercambia(0);
                       repetir 2 veces gira-izquierda;
                       si frente-libre entonces avanza;
                       repetir 2 veces gira-izquierda;
                fin
                sino
                inicio
                        repetir 3 veces gira-izquierda;
                        avanzA;
                        gira-izquierda;
                fin;
        fin;
        repetir 2 veces gira-izquierda;
        si  no-junto-a-zumbador entonces
            avanza;
        copia(0);
        repetir 2 veces gira-izquierda;
        avanza;
        repetir 2 veces
        gira-izquierda;
        mientras junto-a-zumbador hacer coge-zumbador;
        avanza;
        repetir 3 veces gira-izquierda;
        copia(0);
        copia(0);
        gira-izquierda;
        mientras junto-a-zumbador y frente-libre hacer
        inicio
                coge-zumbador;
                mientras frente-libre hacer avanzA;
                deja-zumbador;
                gira-izquierda;
                avanza;
                gira-izquierda;
                mientras no junto-a-zumbador hacer avanza;
                gira-izquierda;
                avanza;
                gira-izquierda;
        fin;
        gira-izquierda;
        avanza;
        mientras junto-a-zumbador hacer
        coge-zumbador;
        avanza;
        repetir 3 veces gira-izquierda;
        mientras frente-libre hacer
        avanza;
        repetir 2 veces gira-izquierda;
        fin;
        avanza;
        mientras junto-a-zumbador hacer coge-zumbador;
        avanza;
        repetir 2 veces gira-izquierda;
        copia(0);
        apagate;
    termina-ejecucion
finalizar-programa
