iniciar-programa
    define-nueva-instruccion g(n) como
    inicio
        repetir n veces
            gira-izquierda;
    fin;
    define-nueva-instruccion quita(n) como
    inicio
        si no si-es-cero(n) entonces
        inicio
            si orientado-al-norte entonces
            inicio
                si junto-a-zumbador entonces
                inicio
                    coge-zumbador;
                    quita(precede(n));
                    si orientado-al-sur entonces
                        deja-zumbador;
                fin
                sino
                inicio
                    mientras no-orientado-al-sur hacer
                    inicio
                        g(1);
                    fin;
                fin;
            fin
            sino
            inicio
                si orientado-al-este entonces
                inicio
                    si junto-a-zumbador entonces
                    inicio
                        coge-zumbador;
                        quita(precede(n));
                        si orientado-al-oeste entonces
                            deja-zumbador;
                    fin
                    sino
                    inicio
                        mientras no-orientado-al-oeste hacer
                        inicio
                            g(1);
                        fin;
                    fin;
                fin
                sino
                inicio
                    si orientado-al-sur entonces
                    inicio
                        si junto-a-zumbador entonces
                        inicio
                            coge-zumbador;
                            quita(precede(n));
                            si orientado-al-norte entonces
                                deja-zumbador;
                        fin
                        sino
                        inicio
                            mientras no-orientado-al-norte hacer
                            inicio
                                g(1);
                            fin;
                        fin;
                    fin
                    sino
                    inicio
                        si orientado-al-oeste entonces
                        inicio
                            si junto-a-zumbador entonces
                            inicio
                                coge-zumbador;
                                quita(precede(n));
                                si orientado-al-este entonces
                                    deja-zumbador;
                            fin
                            sino
                            inicio
                                mientras no-orientado-al-este hacer
                                inicio
                                    g(1);
                                fin;
                            fin;
                        fin;
                    fin;
                fin;
            fin;
        fin;
    fin;
    define-nueva-instruccion div(n) como
    inicio
        si junto-a-zumbador entonces
        inicio
            si orientado-al-norte entonces
            inicio
                quita(n);
                si orientado-al-norte entonces
                inicio
                    div(n);
                    repetir n veces
                        deja-zumbador;
                fin;
            fin
            sino
            inicio
                si orientado-al-este entonces
                inicio
                    quita(n);
                    si orientado-al-este entonces
                    inicio
                        div(n);
                        repetir n veces
                            deja-zumbador;
                    fin;
                fin
                sino
                inicio
                    si orientado-al-sur entonces
                    inicio
                        quita(n);
                        si orientado-al-sur entonces
                        inicio
                            div(n);
                            repetir n veces
                                deja-zumbador;
                        fin;
                    fin
                    sino
                    inicio
                        si orientado-al-oeste entonces
                        inicio
                            quita(n);
                            si orientado-al-oeste entonces
                            inicio
                                div(n);
                                repetir n veces
                                    deja-zumbador;
                            fin;
                        fin;
                    fin;
                fin;
            fin;
        fin;
    fin;
    define-nueva-instruccion primo como
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                si no-junto-a-zumbador entonces
                inicio
                    repetir 2 veces
                        deja-zumbador;
                    sal-de-instruccion;
                fin
                sino
                inicio
                    coge-zumbador;
                    si no-junto-a-zumbador entonces
                    inicio
                        repetir 3 veces
                            deja-zumbador;
                        sal-de-instruccion;
                    fin
                    sino
                    inicio
                        coge-zumbador;
                        si junto-a-zumbador entonces
                        inicio
                            coge-zumbador;
                            si no-junto-a-zumbador entonces
                            inicio
                                repetir 5 veces
                                    deja-zumbador;
                                sal-de-instruccion
                            fin
                            sino
                            inicio
                                coge-zumbador;
                                si no junto-a-zumbador entonces
                                    repetir 6 veces
                                        deja-zumbador
                                sino
                                inicio
                                    coge-zumbador;
                                    si no-junto-a-zumbador entonces
                                    inicio
                                        repetir 7 veces
                                            deja-zumbador;
                                        sal-de-instruccion;
                                    fin
                                    sino
                                    inicio
                                        repetir 7 veces
                                            deja-zumbador;
                                    fin;
                                fin;
                            fin;
                        fin
                        sino
                        inicio
                            repetir 4 veces
                                deja-zumbador;
                        fin;
                    fin;
                fin;
            fin
            sino
            inicio
                g(2);
                deja-zumbador;
                sal-de-instruccion;
            fin;
            si orientado-al-norte entonces
            inicio
                div(2);
                si orientado-al-sur entonces
                inicio
                    div(3);
                    si orientado-al-norte entonces
                    inicio
                        div(5);
                        si orientado-al-sur entonces
                        inicio
                             div(7);
                             (*norte=primo sur=compuesto*)
                        fin
                        sino
                            g(2);
                    fin;
                fin
                sino
                inicio
                    g(2);
                fin;
            fin
            sino
            inicio
                si orientado-al-este entonces
                inicio
                    div(2);
                    si orientado-al-oeste entonces
                    inicio
                        div(3);
                        si orientado-al-este entonces
                        inicio
                            div(5);
                            si orientado-al-oeste entonces
                            inicio
                                div(7);
                                (*este=primo oeste=compuesto*)
                            fin
                            sino
                                g(2);
                        fin;
                    fin
                    sino
                        g(2);
                fin
                sino
                inicio
                    si orientado-al-sur entonces
                    inicio
                        div(2);
                        si orientado-al-norte entonces
                        inicio
                            div(3);
                            si orientado-al-sur entonces
                            inicio
                                div(5);
                                si orientado-al-norte entonces
                                inicio
                                    div(7);
                                    (*sur=primo norte=compuesto*)
                                fin
                                sino
                                    g(2);
                            fin;
                        fin
                        sino
                            g(2);
                    fin
                    sino
                    inicio
                        si orientado-al-oeste entonces
                        inicio
                            div(2);
                            si orientado-al-este entonces
                            inicio
                                div(3);
                                si orientado-al-oeste entonces
                                inicio
                                    div(5);
                                    si orientado-al-este entonces
                                    inicio
                                        div(7);
                                        (*oeste=primo este=compuesto*)
                                    fin
                                    sino
                                        g(2);
                                fin;
                            fin
                            sino
                                g(2);
                        fin;
                    fin;
                fin;
            fin;
        fin;
    fin;
    define-nueva-instruccion cosa como
    inicio
        mientras junto-a-zumbador hacer
            coge-zumbador;
        repetir 4 veces
        inicio
            si frente-libre entonces
            inicio
                avanza;
                si junto-a-zumbador entonces
                inicio
                    si orientado-al-norte entonces
                    inicio
                        primo;
                        si no orientado-al-norte entonces
                        inicio

                            avanza;
                            g(2);
                        fin
                        sino
                            cosa;
                    fin
                    sino
                    inicio
                        si orientado-al-sur entonces
                        inicio
                            primo;
                            si no orientado-al-sur entonces
                            inicio

                                avanza;
                                g(2);
                            fin
                            sino
                                cosa;
                        fin
                        sino
                        inicio
                            si orientado-al-este entonces
                            inicio
                                primo;
                                si no orientado-al-este entonces
                                inicio

                                    avanza;
                                    g(2);
                                fin
                                sino
                                    cosa;
                            fin
                            sino
                            inicio
                                si orientado-al-oeste entonces
                                inicio
                                    primo;
                                    si no orientado-al-oeste entonces
                                    inicio

                                        avanza;
                                        g(2);
                                    fin
                                    sino
                                        cosa;
                                fin
                            fin;
                        fin;
                    fin;
                fin
                sino
                inicio
                    g(2);
                    avanza;
                    g(2);
                fin;
            fin;
            g(1);
        fin;
    fin;
    inicia-ejecucion
        cosa;
        apagate;
    termina-ejecucion
finalizar-programa
