iniciar-programa
define-nueva-instruccion g(n) como
inicio
     repetir n veces
     gira-izquierda;
fin;
define-nueva-instruccion begin como
inicio
    mientras no orientado-al-oeste hacer
    g(1);
    mientras frente-libre hacer
    avanza;
    g(3);
    mientras frente-libre hacer
    avanza;
    g(3);
fin;
define-nueva-instruccion delante como
inicio
    si frente-libre entonces avanza
    sino
        inicio
            g(2);
            mientras frente-libre hacer
            avanza;
            g(1);
            avanza;
            g(1);
        fin;
fin;
define-nueva-instruccion dfs como
inicio
    repetir 4 veces
        inicio
        g(1);
        si frente-libre entonces
        inicio
        avanza;
        si junto-a-zumbador entonces
            inicio
                g(2);
                avanza;
                g(2);
            fin
        sino
            inicio
                deja-zumbador;
                dfs;
            fin;
         fin;
         fin;
     g(2);
     si frente-libre entonces
     avanza;
     g(2);
fin;
define-nueva-instruccion vacuna como
inicio
    repetir 4 veces
    inicio
    mientras frente-libre hacer
        inicio
        si no-junto-a-zumbador entonces
        dfs;
        avanza;
        fin;
    g(3);
    fin;
fin;
define-nueva-instruccion buscar(r) como
inicio
    si junto-a-zumbador entonces
        inicio
            si frente-libre o derecha-libre entonces
            inicio
            delante;
            buscar(r);
            fin;
        fin
    sino
        inicio
            deja-zumbador;
            dfs;
            buscar(sucede(r));
        fin;
    g(2);
    mientras frente-libre hacer avanza;
    g(2);
    coge-zumbador;
    repetir r veces
    deja-zumbador;
    apagate;
fin;
inicia-ejecucion
    begin;
    deja-zumbador;
    vacuna;
    buscar(0);
        apagate;
    termina-ejecucion
finalizar-programa
