iniciar-programa
        define-nueva-instruccion uno como inicio
            mientras no-orientado-al-sur hacer gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir 3 veces gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir 2 veces gira-izquierda;
        fin;
        define-nueva-instruccion junta como inicio
            mientras frente-libre y junto-a-zumbador hacer avanza;
            repetir 2 veces gira-izquierda;
            si no-junto-a-zumbador entonces avanza;
            mientras derecha-libre hacer inicio
                repetir 3 veces gira-izquierda;
                avanza;
                mientras junto-a-zumbador hacer inicio
                    mientras junto-a-zumbador hacer coge-zumbador;
                    si frente-libre entonces avanza;
                fin;
                repetir 2 veces gira-izquierda;
                mientras frente-libre hacer avanza;
                mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                si derecha-libre entonces repetir 3 veces gira-izquierda;
                si frente-libre entonces avanza;
            fin;
        fin;
        define-nueva-instruccion comp(zum) como inicio
             si frente-libre entonces inicio
                    avanza;
                    si junto-a-zumbador entonces inicio
                        repetir zum veces inicio
                            si junto-a-zumbador entonces inicio
                                coge-zumbador;
                            fin sino inicio
                                repetir precede(zum) veces deja-zumbador;
                                repetir 2 veces gira-izquierda;
                            fin;
                        fin;
                        si junto-a-zumbador y orientado-al-oeste entonces inicio
                            repetir zum veces deja-zumbador;
                            comp(zum);
                            sal-de-instruccion;
                        fin sino inicio
                            si junto-a-zumbador entonces inicio
                                repetir 2 veces gira-izquierda;
                                comp(zum);
                                sal-de-instruccion;
                            fin sino inicio
                                comp(zum);
                                sal-de-instruccion;
                            fin;
                        fin;
                    fin sino inicio
                        comp(zum);
                        sal-de-instruccion;
                    fin;
                fin sino inicio
                    repetir 3 veces gira-izquierda;
                    avanza;
                    deja-zumbador;
                    repetir 2 veces gira-izquierda;
                    avanza;
                    sal-de-instruccion;
                fin;

        fin;
        define-nueva-instruccion baja(va) como inicio
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                baja(sucede(va));
            fin sino inicio
                avanza;
                repetir va veces deja-zumbador;
                apagate;
            fin;
        fin;
        define-nueva-instruccion compara(zum) como inicio
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                compara(sucede(zum));
            fin sino inicio
               comp(zum);
               sal-de-instruccion;
           fin;
           sal-de-instruccion;
        fin;
        define-nueva-instruccion cuenta(xd) como inicio
            si junto-a-zumbador y frente-libre entonces inicio
                avanza;
                cuenta(sucede(xd));
            fin sino inicio
                    repetir 2 veces gira-izquierda;
                    mientras no-junto-a-zumbador y frente-libre hacer avanza;
                    si no-junto-a-zumbador entonces inicio
                        repetir 3 veces gira-izquierda;
                        avanza;
                        repetir 2 veces gira-izquierda;
                        baja(0);
                    fin;
                    compara(0);
                    gira-izquierda;
                    repetir precede(xd) veces avanza;
                    cuenta(precede(xd));
            fin;
        fin;
    inicia-ejecucion
        uno;
        junta;
        gira-izquierda;
        cuenta(0);
        apagate;
    termina-ejecucion
finalizar-programa
