iniciar-programa
define-nueva-instruccion g(h) como inicio
    repetir h veces gira-izquierda;
fin;

define-nueva-instruccion regresa como inicio
    g(2);
    mientras frente-libre hacer avanza;
    g(3);
    mientras izquierda-bloqueada hacer avanza;
    g(1);
    avanza;
    g(1);
    mientras frente-libre hacer avanza;
    g(3);
    mientras frente-libre y no junto-a-zumbador hacer avanza;
fin;

define-nueva-instruccion cuenta(u) como inicio
    si frente-libre entonces inicio
        avanza;
        cuenta(sucede(u));
    fin
    sino inicio
        g(2);
        mientras frente-libre hacer avanza;
        g(1);
        mientras derecha-bloqueada hacer avanza;
        g(3);
        avanza;
        g(3);
        mientras frente-libre hacer avanza;
        g(1);
        repetir u veces avanza;

    fin;
fin;

define-nueva-instruccion lleva(i) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            lleva(sucede(i));

        fin
        sino inicio
            cuenta(0);
            repetir i veces deja-zumbador;
            regresa;
        fin;

fin;

define-nueva-instruccion x como inicio

        si junto-a-zumbador entonces inicio
            lleva(0);
            x;
        fin;

fin;

    inicia-ejecucion
        mientras no orientado-al-este hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        g(2);
        mientras frente-libre y no junto-a-zumbador hacer avanza;
        x;
        apagate;
    termina-ejecucion
finalizar-programa
