iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
define-nueva-instruccion busca(p) como inicio
    si no junto-a-zumbador y frente-libre entonces inicio
        si frente-libre entonces avanza;
        busca(0);
    fin;
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        busca(sucede(p));
    fin sino inicio
    si si-es-cero(precede(p)) entonces inicio
        mientras no-orientado-al-norte hacer gira-izquierda;
        avanza;
    fin;
    si si-es-cero(precede(precede(p))) entonces inicio
        mientras no-orientado-al-este hacer gira-izquierda;
        avanza;
    fin;
    si si-es-cero(precede(precede(precede(p)))) entonces inicio
        mientras no-orientado-al-sur hacer gira-izquierda;
        avanza;
    fin;
    si si-es-cero(precede(precede(precede(precede(p))))) entonces inicio
        mientras no-orientado-al-oeste hacer gira-izquierda;
        avanza;
    fin;
    fin;
fin;
    inicia-ejecucion
mientras frente-libre y junto-a-zumbador hacer avanza;
gira(2);
si no-junto-a-zumbador entonces avanza;
busca(0);
        apagate;
    termina-ejecucion
finalizar-programa
 