iniciar-programa
    define-prototipo-instruccion orientacion(busca);
    define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
    define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
    define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
    define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;
    define-nueva-instruccion compara(num) como inicio
        este;
        repetir num veces inicio
            si junto-a-zumbador entonces inicio
                coge-zumbador;
            fin sino inicio
                repetir precede(num) veces deja-zumbador;
                oeste;
            fin;
        fin;
            si junto-a-zumbador y orientado-al-este entonces inicio
                mientras junto-a-zumbador hacer coge-zumbador;
                repetir num veces deja-zumbador;
            fin sino inicio
                si junto-a-zumbador entonces inicio
                    este;
                fin sino inicio
                    repetir num veces deja-zumbador;
                fin;
            fin;
            repetir 2 veces deja-zumbador;
    fin;
    define-nueva-instruccion casa(corto) como inicio
       si junto-a-zumbador entonces inicio
           coge-zumbador;
           si junto-a-zumbador entonces inicio
               coge-zumbador;
               si junto-a-zumbador entonces inicio
                   compara(corto);
               fin sino inicio
                   deja-zumbador;
                   deja-zumbador;
               fin;
           fin sino inicio
               repetir 2 veces deja-zumbador;
               repetir corto veces deja-zumbador;
           fin;
       fin sino inicio
           repetir 2 veces deja-zumbador;
           orientacion(corto);
       fin;
    fin;

    define-nueva-instruccion orientacion(busca) como inicio
        norte;
        si frente-libre entonces inicio
            avanza;
            casa(sucede(busca));
            sur;
            avanza;
        fin;

        sur;
        si frente-libre entonces inicio
            avanza;
            casa(sucede(busca));
            norte;
            avanza;
        fin;

        este;
        si frente-libre entonces inicio
            avanza;
            casa(sucede(busca));
            oeste;
            avanza;
        fin;

        oeste;
        si frente-libre entonces inicio
            avanza;
            casa(sucede(busca));
            este;
            avanza;
        fin;
        repetir 2 veces coge-zumbador;
    fin;
    define-nueva-instruccion superior(zumba) como inicio
        si frente-libre entonces inicio
            avanza;
            si junto-a-zumbador entonces coge-zumbador;
            superior(sucede(zumba));
        fin sino inicio
            sur;
            mientras frente-libre y no-junto-a-zumbador hacer avanza;
            oeste;
            avanza;
            mientras junto-a-zumbador hacer coge-zumbador;
            repetir zumba veces deja-zumbador;
            este;
            avanza;
            oeste;
        fin;
    fin;
    define-nueva-instruccion come(xd) como inicio
        si si-es-cero(xd) entonces inicio
            mientras junto-a-zumbador hacer coge-zumbador;
            apagate;
        fin sino inicio
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                come(precede(xd));
            fin sino inicio
                repetir xd veces deja-zumbador;
            fin;
        fin;
        apagate;
    fin;
    define-nueva-instruccion compar(varios) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            compar(sucede(varios));
        fin sino inicio
            avanza;
            come(varios);
        fin;
    fin;
    define-nueva-instruccion inferior(zumba) como inicio
        si frente-libre entonces inicio
            avanza;
            si junto-a-zumbador entonces coge-zumbador;
            inferior(sucede(zumba));
        fin sino inicio
            norte;
            mientras frente-libre y no-junto-a-zumbador hacer avanza;
            oeste;
            avanza;
            repetir zumba veces inicio
                si junto-a-zumbador entonces inicio
                    coge-zumbador;
                fin sino inicio
                    repetir precede(zumba) veces deja-zumbador;
                    este;
                fin;
            fin;
            si junto-a-zumbador y orientado-al-oeste entonces inicio
                este;
                avanza;
                come(zumba);
            fin sino inicio
                si junto-a-zumbador entonces inicio
                    compar(0);
                fin sino inicio
                    este;
                    avanza;
                    come(zumba);
                fin;
            fin;
        fin;
    fin;
    define-nueva-instruccion jaguar(zum) como inicio
        si frente-libre entonces inicio
            avanza;
            si junto-a-zumbador entonces coge-zumbador;
            jaguar(sucede(zum));
        fin sino inicio
            oeste;
            mientras frente-libre y no-junto-a-zumbador hacer avanza;
            norte;
            superior(zum);
            sur;
            inferior(zum);
        fin;
    fin;
     define-nueva-instruccion orientacion2 como inicio
         si junto-a-zumbador entonces inicio
             coge-zumbador;
             si junto-a-zumbador entonces inicio
                 coge-zumbador;
                 este;
                 jaguar(0);
             fin sino inicio
                 deja-zumbador;
             fin;
         fin sino inicio
         deja-zumbador;
        norte;
        si frente-libre entonces inicio
            avanza;
            orientacion2;
            sur;
            avanza;
        fin;

        sur;
        si frente-libre entonces inicio
            avanza;
            orientacion2;
            norte;
            avanza;
        fin;

        este;
        si frente-libre entonces inicio
            avanza;
            orientacion2;
            oeste;
            avanza;
        fin;

        oeste;
        si frente-libre entonces inicio
            avanza;
            orientacion2;
            este;
            avanza;
        fin;
    fin;
    fin;
    inicia-ejecucion
        casa(0);
        orientacion2;

        apagate;
    termina-ejecucion
finalizar-programa
