iniciar-programa
define-nueva-instruccion a como  avanza;
define-nueva-instruccion gi como gira-izquierda;
define-nueva-instruccion mv como repetir 2 veces gi;
define-nueva-instruccion gd como repetir 3 veces gi;
define-nueva-instruccion sa como mientras frente-libre hacer a;
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gi;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gi;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gi;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gi;
define-nueva-instruccion mcd(x) como
inicio
    repetir x veces si junto-a-zumbador entonces coge-zumbador sino norte;
    si junto-a-zumbador entonces mcd(x)
    sino
    inicio
        si no-orientado-al-norte entonces
        inicio
            mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
            este;
            a;
            mientras junto-a-zumbador hacer
            inicio
                repetir x veces si junto-a-zumbador entonces coge-zumbador sino norte;
            fin;
            si no-orientado-al-norte entonces
            inicio
                a;
                repetir x veces deja-zumbador;
                apagate;
            fin
            sino
            inicio
                mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                oeste;
                a;
                mv;
                mcd(precede(x));
            fin;
       fin
       sino
       inicio
           este;
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           mcd(precede(x));
       fin;
    fin;
fin;
define-nueva-instruccion contar(x) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        contar(sucede(x));
    fin
    sino
    inicio
        repetir x veces deja-zumbador;
        mcd(x);
    fin;
fin;
define-nueva-instruccion menor(x) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        menor(sucede(x));
    fin
    sino
    inicio
        repetir x veces deja-zumbador;
        a;
        repetir x veces
        si junto-a-zumbador entonces
            coge-zumbador;
        si junto-a-zumbador entonces repetir x veces deja-zumbador
        sino
        inicio
            mv;
            a;
            mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
            repetir x veces coge-zumbador;
            mv;
            a;
            repetir x veces deja-zumbador;
        fin;
    fin;
fin;
    inicia-ejecucion
    sur;
    sa;
    oeste;
    sa;
    este;
    menor(0);
    oeste;
    sa;
    este;
    contar(0);
           apagate;
    termina-ejecucion
finalizar-programa

