iniciar-programa
define-nueva-instruccion camino(x) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                si junto-a-zumbador entonces
                inicio
                    coge-zumbador;
                    si frente-libre entonces
                        avanza
                     sino
                     inicio
                        si izquierda-libre entonces
                            gira-izquierda
                        sino
                            repetir 2 veces
                                gira-izquierda;
                            avanza;
                    fin;
                    camino(0);
                    repetir 3 veces
                        deja-zumbador;
                    si frente-libre entonces
                        avanza
                    sino
                        apagate;
                fin
                sino
                inicio
                    si frente-libre entonces
                        avanza
                     sino
                     inicio
                        si izquierda-libre entonces
                            gira-izquierda
                        sino
                            repetir 2 veces
                                gira-izquierda;
                            avanza;
                    fin;
                    camino(0);
                    repetir 2 veces
                        deja-zumbador;
                    si frente-libre entonces
                        avanza
                    sino
                        apagate;

                fin;
            fin
            sino
            inicio
                si frente-libre entonces
                    avanza
                sino
                inicio
                    si izquierda-libre entonces
                        gira-izquierda
                    sino
                        repetir 2 veces
                            gira-izquierda;
                    avanza;
                fin;
                camino(0);
                deja-zumbador;
                si frente-libre entonces
                    avanza
                sino
                    apagate;
            fin;
        fin
        sino
        inicio
            deja-zumbador;

                repetir 2 veces
                    gira-izquierda;
                avanza;
                si junto-a-zumbador o frente-libre entonces
                inicio
                    repetir 2 veces
                        gira-izquierda;
                    gira-izquierda;
                    si frente-libre entonces
                        avanza
                    sino
                    inicio
                        si izquierda-libre entonces
                            gira-izquierda
                        sino
                        inicio
                            repetir 2 veces
                                gira-izquierda;
                            avanza;
                            repetir 2 veces
                                gira-izquierda;
                        fin;
                    fin;
                    camino(0);
                fin
                sino
                inicio
                    mientras no orientado-al-oeste hacer
                        gira-izquierda;
                    si frente-libre entonces
                    inicio
                        avanza;
                        si junto-a-zumbador entonces
                            camino(0)
                        sino
                        inicio
                            mientras no orientado-al-oeste hacer
                                gira-izquierda;
                            mientras frente-libre hacer
                                avanza;
                            repetir 2 veces
                                gira-izquierda;
                        fin;
                    fin
                    sino
                    inicio
                        mientras no orientado-al-oeste hacer
                            gira-izquierda;
                        mientras frente-libre hacer
                            avanza;
                        repetir 2 veces
                            gira-izquierda;
                    fin;
                fin;
       fin;
    fin
    sino
    inicio

            repetir 2 veces
                gira-izquierda;
            avanza;
            si junto-a-zumbador o frente-libre entonces
                inicio
                    repetir 2 veces
                        gira-izquierda;
                    gira-izquierda;
                    si frente-libre entonces
                        avanza
                    sino
                    inicio
                        si izquierda-libre entonces
                            gira-izquierda
                        sino
                        inicio
                            repetir 2 veces
                                gira-izquierda;
                            avanza;
                            repetir 2 veces
                                gira-izquierda;
                        fin;
                    fin;
                    camino(0);
                fin
                sino
                inicio
                    mientras no orientado-al-oeste hacer
                        gira-izquierdA;
                    si frente-libre entonces
                    inicio
                        avanza;
                        si junto-a-zumbador entonces
                            camino(0)
                        sino
                        inicio
                            mientras no orientado-al-oeste hacer
                                gira-izquierda;
                            mientras frente-libre hacer
                                avanza;
                            repetir 2 veces
                                gira-izquierda;
                        fin;
                    fin
                    sino
                    inicio
                        mientras no orientado-al-oeste hacer
                            gira-izquierda;
                        mientras frente-libre hacer
                            avanza;
                        repetir 2 veces
                            gira-izquierda;
                    fin;
                fin;

    fin;
fin;
define-nueva-instruccion exhaustiva(x) como
inicio
si no junto-a-zumbador entonces
    inicio
        repetir 3 veces
        inicio
                    si frente-libre y no orientado-al-sur entonces
                    inicio
                        si no junto-a-zumbador y orientado-al-oeste entonces
                            repetir 2 veces
                                deja-zumbador
                            sino
                            inicio
                                 si no junto-a-zumbador y orientado-al-norte entonces
                                     repetir 3 veces
                                         deja-zumbador
                                     sino
                                     inicio
                                         si no junto-a-zumbador y orientado-al-este entonces
                                             repetir 4 veces
                                                 deja-zumbador;
                                     fin;
                            fin;
                        avanza;
                        exhaustiva(precede(x));
                        si no orientado-al-sur entonces
                        inicio
                            repetir 2 veces
                                gira-izquierdA;
                            avanza;
                            repetir 2 veces
                                gira-izquierda;
                            si orientado-al-oeste entonces
                                repetir 2 veces
                                    gira-izquierda
                            sino
                                gira-izquierda;
                           mientras junto-a-zumbador hacer
                                coge-zumbador;
                        fin ;
                    fin
                    sino
                    inicio
                        si orientado-al-norte y frente-bloqueado y no si-es-cero(x) entonces
                        inicio
                            repetir 2 veces
                                gira-izquierda;
                            avanza;
                            camino(0);
                            apagate;
                        fin;
                        si orientado-al-oeste entonces
                        inicio
                            repetir 2 veces
                                gira-izquierda;
                            si junto-a-zumbador entonces
                            repetir 2 veces
                                deja-zumbador;
                        fin
                        sino
                            si orientado-al-este entonces
                                gira-izquierda
                    fin;
        fin;
    fin;
 fin;

 define-nueva-instruccion recorre(x) como
inicio
    si frente-libre entonces
    inicio
        avanza;
        recorre(sucede(x));
    fin
    sino
    inicio
        repetir 2 veces
            gira-izquierdA;
        mientras no junto-a-zumbador hacer
            avanza;
        coge-zumbador;
        si frente-bloqueado entonces
             mientras no orientado-al-norte hacer
                 gira-izquierdA;
        exhaustiva(x);
        deja-zumbador;
        mientras no orientado-al-este hacer
            gira-izquierda;
        mientras frente-libre hacer
            avanza;
        repetir 2 veces
            gira-izquierda;
        recorre(0);
    fin;
fin;
    inicia-ejecucion
    mientras no orientado-al-oeste hacer
        gira-izquierda;
    deja-zumbador;
    mientras frente-libre hacer
        avanza;
    repetir 2 veces
        gira-izquierda;
    recorre(3);
    apagate;
    termina-ejecucion
finalizar-programa
