iniciar-programa
    define-nueva-instruccion g(n) como
    inicio
        repetir n veces
        gira-izquierda;
    fin;
    define-nueva-instruccion min(n) como
    inicio
        repetir n veces
            si junto-a-zumbador entonces
                coge-zumbador
            sino
                inicio
                    repetir precede(n) veces
                    deja-zumbador;
                    gira-izquierda;
                    gira-izquierda;
                fin;
            si orientado-al-este entonces
            inicio
                mientras junto-a-zumbador hacer
                    coge-zumbador;
                repetir n veces
                    deja-zumbador;

            fin;

    fin;
    define-nueva-instruccion dfs(n) como
    inicio
    deja-zumbador;
    repetir 4 veces
     inicio
         gira-izquierda;
         si frente-libre entonces
             inicio
                 avanza;
                 si no-junto-a-zumbador entonces
                     inicio
                         dfs(sucede(n));
                    fin
                 sino
                     inicio
                         coge-zumbador;
                         si junto-a-zumbador entonces
                         inicio
                             si si-es-cero (precede(precede(n))) entonces
                                 inicio
                                     mientras junto-a-zumbador hacer
                                         coge-zumbador;
                                     repetir 2 veces
                                     deja-zumbador;
                                     apagate;
                                 fin;
                                     coge-zumbador;
                                     si no-junto-a-zumbador entonces
                                         inicio
                                         repetir n veces
                                         deja-zumbador;

                                         fin
                                 sino
                                     inicio
                                     repetir 2 veces
                                         deja-zumbador;
                                     si orientado-al-este entonces
                                     inicio
                                         min(n);
                                         mientras no-orientado-al-este hacer gira-izquierda;
                                     fin
                                     sino
                                         si orientado-al-norte entonces
                                         inicio
                                             g(3);
                                             min(n);
                                             mientras no-orientado-al-norte hacer
                                             gira-izquierda;
                                         fin
                                         sino
                                         si orientado-al-oeste entonces
                                         inicio
                                            g(2);
                                            min(n);
                                            mientras no-orientado-al-oeste hacer
                                            gira-izquierda;

                                         fin
                                         sino
                                         inicio
                                             g(1);
                                             min(n);
                                             mientras no-orientado-al-sur hacer
                                             g(1);
                                         fin;
                                     fin;
                         fin
                         sino
                             deja-zumbador;
                     fin;

     gira-izquierda;
     gira-izquierda;

     avanza;
     gira-izquierda;
     gira-izquierda;

             fin;
             fin;
     coge-zumbador;
     fin;
    inicia-ejecucion
       si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           coge-zumbador;
           apagate;
       fin;

        dfs(1);
        apagate;
    termina-ejecucion
finalizar-programa


