iniciar-programa
define-nueva-instruccion multiplicar(x) como inicio
   si junto-a-zumbador y frente-libre entonces inicio
        coge-zumbador;
        multiplicar(sucede(x));
        sal-de-instruccion;
        fin sino inicio
            si frente-libre entonces avanza;
            fin;
            si junto-a-zumbador y frente-bloqueado y orientado-al-sur entonces inicio
                coge-zumbador;
                multiplicar(x);
                 repetir x veces deja-zumbador;
                 fin sino inicio
                  mientras no orientado-al-este hacer gira-izquierda;
                    si frente-libre entonces avanza;
                    repetir 3 veces gira-izquierda;                                              
                    si frente-libre entonces avanza;
                    repetir 3 veces gira-izquierda;
                   si frente-libre entonces avanza;
                    gira-izquierda;
         fin;
    fin;
    define-nueva-instruccion c(n) como inicio
        si junto-a-zumbador y orientado-al-sur entonces inicio
            coge-zumbador;
            c(sucede(n));
            fin sino inicio
                repetir n veces deja-zumbador;
                avanza;
                gira-izquierda;
                avanza;
                gira-izquierda;
                avanza;
                repetir 3 veces gira-izquierda;
                fin;
                mientras junto-a-zumbador y orientado-al-este hacer inicio
                    repetir n veces inicio
                        si no junto-a-zumbador entonces inicio
                            mientras no orientado-al-sur hacer gira-izquierda;
                            avanzA;
                            mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                            mientras frente-libre hacer avanza;
                            repetir 3 veces gira-izquierda;
                            mientras frente-libre hacer avanza;
                            mientras junto-a-zumbador hacer coge-zumbador;
                            apagate;
                            fin;
                             si junto-a-zumbador entonces coge-zumbador;  
                        fin;
                    avanza;
                    gira-izquierda;
                    avanzA;
                    gira-izquierda;
                    avanza;
                    deja-zumbador;
                    avanza;
                    gira-izquierda;
                    mientras frente-libre hacer avanza;
                    repetir 3 veces gira-izquierda;
                    mientras frente-libre hacer avanza;
                    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                    repetir 2 veces gira-izquierda;
                    repetir 3 veces avanza;
                    gira-izquierda;
                    mientras frente-libre hacer avanza;
                    repetir 3 veces gira-izquierda;
                    fin;
        fin;
    inicia-ejecucion
        si frente-libre entonces inicio
           si frente-libre entonces avanza;
            gira-izquierda;
            repetir 3 veces avanza;
            gira-izquierda;
            si frente-libre entonces avanza;
            gira-izquierda;
            fin;
        mientras algun-zumbador-en-la-mochila hacer inicio
            multiplicar(0);
            avanza;
            mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
            gira-izquierda;
            fin;
            repetir 2 veces avanza;
            gira-izquierda;
            repetir 2 veces avanza;
            repetir 2 veces gira-izquierda;
            c(0);
        apagate;
    termina-ejecucion
finalizar-programa
