iniciar-programa
define-nueva-instruccion g(h) como inicio
    repetir h veces gira-izquierda;
fin;
define-nueva-instruccion leeInstruccion como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               avanza;
               leeInstruccion;
               mientras no orientado-al-este hacer gira-izquierda;

               avanza;
               si no junto-a-zumbador entonces inicio
                   repetir 2 veces deja-zumbador;
               fin;
            fin
            sino inicio
                avanza;
                leeInstruccion;
                mientras no orientado-al-sur hacer gira-izquierda;

                avanza;
                si no junto-a-zumbador entonces inicio
                    repetir 2 veces deja-zumbador;
                fin;
            fin;
        fin
        sino inicio
            avanza;
            leeInstruccion;
            mientras no orientado-al-norte hacer gira-izquierda;

            avanza;
            si no junto-a-zumbador entonces inicio
                repetir 2 veces deja-zumbador;
            fin;
        fin;
    fin
    sino inicio
        g(2);
        avanza;
        repetir 2 veces deja-zumbador;
    fin;
fin;

define-nueva-instruccion rellena como inicio
    si izquierda-libre entonces inicio
        si no junto-a-zumbador entonces inicio
            mientras no junto-a-zumbador hacer inicio
                deja-zumbador;
            avanza;
            fin;
        fin;
        g(1);
        avanza;
        g(1);
        mientras frente-libre hacer avanza;
        g(2);
        rellena;
    fin;
fin;
define-nueva-instruccion cuenta1(n) como inicio
    si junto-a-zumbador entonces inicio
        avanza;
        cuenta1(sucede(n));
    fin
    sino inicio
         g(3);
         avanza;
         g(3);
         mientras frente-libre hacer avanza;
         g(2);
         si junto-a-zumbador entonces inicio
             cuenta1(n);
         fin
         sino inicio
             g(1);
             mientras frente-libre hacer avanza;
             g(2);
             repetir n veces deja-zumbador;
             avanza;
             g(1);
         fin;
    fin;
fin;
define-nueva-instruccion desrrellena como inicio
     si junto-a-zumbador entonces inicio
         coge-zumbador;
         avanza;
         desrrellena;
     fin
     sino inicio
         g(3);
         avanza;
         g(3);
         mientras frente-libre hacer avanza;
         g(2);
         si junto-a-zumbador entonces inicio
             desrrellena;
         fin
         sino inicio
             g(1);
             mientras frente-libre hacer avanza;
             g(3);
         fin;


     fin;
fin;

    inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
    avanza;
    mientras junto-a-zumbador hacer avanza;
    g(2);
    avanza;
    leeInstruccion;
    mientras no orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    g(3);
    avanza;
    g(3);
    si izquierda-libre entonces inicio
    rellena;
    fin;
    cuenta1(0);
    desrrellena;


        apagate;
    termina-ejecucion
finalizar-programa
 