iniciar-programa
    define-nueva-instruccion derecha como inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
    fin;
    define-nueva-instruccion orienta como inicio
        mientras no-orientado-al-oeste hacer inicio
            gira-izquierda;
        fin;
        mientras frente-libre hacer inicio
            avanza;
        fin;
        mientras no-orientado-al-sur hacer inicio
            gira-izquierda;
        fin;
        mientras frente-libre hacer inicio
            avanza;
        fin;
        gira-izquierda;
        gira-izquierda;
        avanza;
        derecha
    fin;
    define-nueva-instruccion sobro como inicio
        mientras no-orientado-al-oeste hacer inicio
            gira-izquierda;
        fin;
        mientras frente-libre hacer inicio
            avanza;
        fin;
         mientras no-orientado-al-sur hacer inicio
            gira-izquierda;
        fin;
        mientras frente-libre hacer inicio
            avanza;
        fin;
        gira-izquierda;
        deja-zumbador;
        avanza;
        mientras algun-zumbador-en-la-mochila hacer inicio
            deja-zumbador;
        fin;
    fin;
    define-nueva-instruccion pares(c) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            pares(sucede(c));
        fin sino inicio
            mientras algun-zumbador-en-la-mochila hacer inicio
                mientras no-junto-a-zumbador hacer inicio
                   si frente-bloqueado y orientado-al-este entonces inicio
                       gira-izquierda;
                        si frente-bloqueado y ningun-zumbador-en-la-mochila entonces inicio
                           apagate;
                       fin;
                       si frente-bloqueado y algun-zumbador-en-la-mochila entonces inicio
                           sobro;
                           orienta;
                       fin;
                       si orientado-al-norte entonces inicio
                           avanza;
                           gira-izquierda;
                       fin;
                   fin;
                   si frente-bloqueado y orientado-al-oeste  entonces inicio
                       derecha;
                       si frente-bloqueado y ningun-zumbador-en-la-mochila entonces inicio
                           apagate;
                       fin;
                       si frente-bloqueado y algun-zumbador-en-la-mochila entonces inicio
                           sobro;
                           orienta;
                       fin;
                       si orientado-al-norte entonces inicio
                           avanza;
                           derecha;
                       fin;
                   fin;
                   si frente-libre y no-junto-a-zumbador entonces inicio
                       avanza;
                   fin;
               fin;
               si algun-zumbador-en-la-mochila entonces inicio
               si junto-a-zumbador  entonces inicio
                   repetir c veces inicio
                       si no-junto-a-zumbador entonces inicio
                           mientras algun-zumbador-en-la-mochila hacer inicio
                               deja-zumbador;
                           fin;
                           repetir c veces inicio
                               coge-zumbador;
                           fin;
                           gira-izquierda;
                       fin;
                       si no-orientado-al-sur y no-orientado-al-norte entonces inicio
                           coge-zumbador;
                       fin;
                   fin;
                   si junto-a-zumbador y no-orientado-al-sur y no-orientado-al-norte entonces inicio
                       repetir c veces inicio
                           deja-zumbador;
                       fin;
                   fin;
               fin;
               si no-junto-a-zumbador entonces inicio
                   sobro;
                   gira-izquierda;
                   gira-izquierda;
                   avanza;
                   coge-zumbador;
                   gira-izquierda;
                   gira-izquierda;
                   avanza;
                   deja-zumbador;
               fin;
               si orientado-al-norte entonces inicio
                   derecha;
               fin;
               si orientado-al-sur entonces inicio
                   derecha;
               fin;
               si frente-bloqueado y orientado-al-este entonces inicio
                   gira-izquierda;
               si frente-bloqueado entonces inicio
                   sobro;
               fin;
               si frente-libre entonces inicio
                   avanza;
               fin;
               gira-izquierda;
               fin;
               si frente-bloqueado y orientado-al-oeste entonces inicio
                   derecha;
               si frente-bloqueado entonces inicio
                   sobro;
               fin;
               si frente-libre entonces inicio
                   avanza;
               fin;
               derecha;
               fin;
               si frente-libre entonces inicio
                   avanza;
               fin;
               fin;
           fin;
       fin;
    fin;
    define-nueva-instruccion impar2(e) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            impar2(sucede(e));
        fin sino inicio
            mientras algun-zumbador-en-la-mochila hacer inicio
                mientras no-junto-a-zumbador y orientado-al-norte hacer inicio
                    si frente-bloqueado y no-junto-a-zumbador entonces inicio
                        sobro;
                    fin;
                    avanza;
                    si frente-bloqueado y no-junto-a-zumbador entonces inicio
                        sobro;
                    fin;
                fin;
                si junto-a-zumbador entonces inicio
                    repetir e veces inicio
                        si no-junto-a-zumbador entonces inicio
                            mientras algun-zumbador-en-la-mochila hacer inicio
                                deja-zumbador;
                            fin;
                            repetir e veces inicio
                                coge-zumbador;
                            fin;
                            gira-izquierda;
                        fin;
                        si orientado-al-norte entonces inicio
                            coge-zumbador;
                        fin;
                    fin;
                fin;
                si junto-a-zumbador y orientado-al-norte entonces inicio
                    repetir e veces inicio
                        deja-zumbador;
                    fin;
                fin;
                si orientado-al-oeste entonces inicio
                    derecha;
                fin;
                si frente-bloqueado y junto-a-zumbador y orientado-al-norte entonces inicio
                    sobro;
                fin;
                si no-junto-a-zumbador y algun-zumbador-en-la-mochila entonces inicio
                    sobro;
                    gira-izquierda;
                    gira-izquierda;
                    avanza;
                    coge-zumbador;
                    gira-izquierda;
                    gira-izquierda;
                    avanza;
                    deja-zumbador;
                fin;

                si orientado-al-norte y frente-libre entonces inicio
                    avanza;
                fin;

            fin;
            si frente-bloqueado y algun-zumbador-en-la-mochila y orientado-al-norte entonces inicio
                sobro;
            fin;
        fin;
    fin;
    define-nueva-instruccion impar como inicio
        mientras frente-libre hacer inicio
            mientras no-junto-a-zumbador hacer inicio
                   si frente-bloqueado y orientado-al-este entonces inicio
                       gira-izquierda;
                       si frente-bloqueado entonces inicio
                           apagate;
                       fin;
                       avanza;
                       gira-izquierda;
                   fin;
                   si frente-bloqueado y orientado-al-oeste entonces inicio
                       derecha;
                       si frente-bloqueado entonces inicio
                           apagate;
                       fin;
                       avanza;
                       derecha;
                   fin;
                   si no-junto-a-zumbador entonces inicio
                       avanza;
                   fin;
               fin;
            pares(0);
            orienta;
        fin;
    fin;
    inicia-ejecucion
        mientras no-orientado-al-norte hacer inicio
            gira-izquierda;
        fin;
        avanza;
        repetir 3 veces inicio
            gira-izquierda;
        fin;
        mientras frente-bloqueado hacer inicio
            gira-izquierda;
             mientras no-junto-a-zumbador y frente-libre hacer inicio
                 avanza;
             fin;
             si frente-bloqueado y no-junto-a-zumbador y ningun-zumbador-en-la-mochila entonces inicio
                 apagate;
             fin;
            impar2(0);
            orienta;
        fin;
        si frente-libre entonces inicio
            impar;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
