iniciar-programa
    define-prototipo-instruccion final;
    define-prototipo-instruccion contar(k);
    define-prototipo-instruccion verificar(k);
    define-prototipo-instruccion recorrer;
    define-prototipo-instruccion compara(k);
    define-prototipo-instruccion buscar;
    define-nueva-instruccion g(n) como
    inicio
          repetir n veces
          gira-izquierda;
    fin;
    define-nueva-instruccion begin como
    inicio
        mientras no-orientado-al-norte hacer
        g(1);
        mientras frente-libre hacer avanza;
        g(3);
        mientras frente-libre hacer avanza;
        g(2);
        buscar;
        contar(0);
    fin;
    define-nueva-instruccion par como
    inicio
        mientras no-orientado-al-norte hacer
        g(1);
        mientras frente-libre hacer avanza;
        g(1);
        mientras frente-libre hacer avanza;
        g(1);
        mientras frente-libre hacer avanza;
        g(1);
        avanza;
        mientras algun-zumbador-en-la-mochila hacer
        deja-zumbador;
        g(2);
        avanza;
        begin;
    fin;

    define-nueva-instruccion contar(k) como
    inicio
        si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                contar(sucede(k));
            fin
        sino
        inicio
        recorrer;
        buscar;
            si junto-a-zumbador entonces
            compara(k);
        fin;
    fin;
    define-nueva-instruccion compara(k) como
    inicio
        si junto-a-zumbador entonces
            repetir k veces
            inicio
            si junto-a-zumbador entonces
            coge-zumbador
            sino
            mientras no-orientado-al-norte hacer
            g(1);
            fin;
        si no-junto-a-zumbador y no-orientado-al-norte entonces
        mientras no-orientado-al-sur hacer
        g(1);
        si junto-a-zumbador entonces
            inicio
            mientras algun-zumbador-en-la-mochila hacer
            deja-zumbador;
            repetir k veces
            coge-zumbador;
            mientras no-orientado-al-este hacer
            g(1);

            fin;
         verificar(k);
    fin;
    define-nueva-instruccion verificar(k) como
    inicio
            si orientado-al-sur entonces
            par;
            si orientado-al-norte entonces
                inicio
                      mientras algun-zumbador-en-la-mochila hacer
                      deja-zumbador;
                      repetir k veces
                      coge-zumbador;
                      mientras no-orientado-al-oeste hacer
                      g(1);
                      recorrer;
                      buscar;
                      compara(k);
                fin;
             si orientado-al-este entonces
                 inicio
                     g(2);
                     recorrer;
                     buscar;
                     compara(k);
                 fin;


    fin;
    define-nueva-instruccion encontrado como
    inicio
        mientras no-orientado-al-oeste hacer
        g(1);
        mientras frente-libre hacer avanza;
        g(1);
        avanza;
        deja-zumbador;
        g(1);
        avanza;
        mientras algun-zumbador-en-la-mochila hacer
        deja-zumbador;
        g(2);
        avanza;
        begin;
    fin;
    define-nueva-instruccion recorrer como
    inicio
        si frente-libre entonces
        avanza
        sino
        inicio
            g(2);
            mientras frente-libre hacer
            avanza;
            g(3);
            si frente-libre entonces
                inicio
                avanza;
                g(3);
                fin
            sino
                inicio
                si algun-zumbador-en-la-mochila entonces
                encontrado
                sino
                final;
                fin;

        fin;
    fin;
    define-nueva-instruccion final como
    inicio
        mientras no-orientado-al-oeste hacer
        g(1);
        mientras frente-libre hacer avanza;
        g(1);
        avanza;
        g(1);
        avanza;
        mientras junto-a-zumbador hacer
        coge-zumbador;
        apagate;
    fin;
    define-nueva-instruccion buscar como
    inicio
        mientras no-junto-a-zumbador hacer
        recorrer;
    fin;

    inicia-ejecucion
     begin;
     apagate;
    termina-ejecucion
finalizar-programa
