iniciar-programa
    define-nueva-instruccion norte como mientras no orientado-al-norte 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 sur como mientras no orientado-al-sur hacer gira-izquierda;
    define-nueva-instruccion cuente(z) como inicio
        si frente-libre entonces inicio
            avanza;
            cuente(z);
        fin sino inicio
            este;
            avanza;
            avanza;
        fin;
        deja-zumbador;
    fin;
    define-nueva-instruccion cuenta(m) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            cuenta(sucede(m));
        fin sino inicio
            repetir m veces deja-zumbador;
            oeste;
            avanza;
            norte;
            avanza;
            repetir m veces avanza;
            sur;
            avanza;
            avanza;
            norte;
            mientras no junto-a-zumbador hacer inicio
                repetir m veces avanza;
            fin;
            sur;
            cuente(1);
            apagate;
        fin;
    fin;
    define-nueva-instruccion recoger(n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            recoger(sucede(n));
        fin sino inicio
             repetir n veces deja-zumbador;
             norte;
             repetir n veces avanza;
             sur;
                avanza;
                norte;
            deja-zumbador;
            mientras frente-libre hacer inicio
                repetir n veces si frente-libre entonces inicio avanza;
                fin sino inicio
                    sur;
                    mientras frente-libre hacer
                        avanza;
                    este;
                    avanza;
                    cuenta(0);
                fin;
                deja-zumbador;
            fin;
            sur;
            mientras frente-libre hacer avanza;
            este;
            avanza;
            cuenta(0);
        fin;
    fin;
    inicia-ejecucion
    oeste;
        mientras frente-libre hacer avanza;
    sur;
    mientras frente-libre hacer avanza;
    norte;
        recoger(0);
        apagate;
    termina-ejecucion
finalizar-programa

