iniciar-programa
define-nueva-instruccion g(n) como
repetir n veces gira-izquierda;
define-nueva-instruccion suma(n) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        suma(sucede(n))
    fin
    sino
    inicio
        repetir n veces deja-zumbador;
        avanza;
        repetir n veces deja-zumbador;
    fin;
fin;
define-nueva-instruccion sumas como
inicio
    gira-izquierda;
    si frente-libre entonces
    inicio
        avanza;
        g(2);
        suma(0);
        g(2);
    fin;
    gira-izquierda;
    si frente-libre entonces
    inicio
        avanza;
        g(2);
        suma(0);
    fin
    sino
    g(2);
fin;
define-nueva-instruccion tiempo(n) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        tiempo(sucede(n));
    fin
    sino
    inicio
        repetir n veces deja-zumbador;
        mientras frente-libre hacer
        inicio
            avanza;
            mientras junto-a-zumbador hacer coge-zumbador;
            repetir n veces deja-zumbador;
        fin;
    fin;
fin;
define-nueva-instruccion cuenta como
inicio
    mientras junto-a-zumbador hacer coge-zumbador;
    sumas;
    mientras frente-libre hacer
    inicio
        avanza;
        mientras junto-a-zumbador hacer coge-zumbador;
        sumas;
        si izquierda-bloqueada y frente-libre entonces
        inicio
            tiempo(0);
        fin;
    fin;
    g(2);
    mientras frente-libre hacer avanza;
    g(2);
    mientras frente-libre y derecha-bloqueada hacer avanza;
    si derecha-libre entonces
    inicio
        g(3);
        avanza;
        gira-izquierda;
        cuenta;
    fin
    sino
    inicio
        apagate;
    fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
    mientras junto-a-zumbador hacer coge-zumbador;
    deja-zumbador;
    si frente-libre entonces
    avanza
    sino
    inicio
        g(3);
        si frente-libre entonces
        avanza
        sino
        apagate;
        gira-izquierda;
    fin;
    cuenta;
        apagate;
    termina-ejecucion
finalizar-programa
