iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
define-nueva-instruccion avanzar como inicio
si frente-libre entonces avanza;
si (izquierda-bloqueada y derecha-bloqueada ) o (frente-bloqueado) entonces inicio
gira(2);
si izquierda-bloqueada y derecha-bloqueada entonces avanza;
gira(2);
sal-de-instruccion;
fin;
avanzar;
fin;

define-nueva-instruccion bobeda como inicio
mientras no orientado-al-oeste hacer gira-izquierda;
mientras junto-a-zumbador hacer inicio
coge-zumbador;
gira(3);
fin;
avanzar;
gira(1);
avanzar;
gira(2);
mientras izquierda-bloqueada hacer avanza;
gira(1);
avanza;
mientras izquierda-bloqueada y derecha-bloqueada hacer avanza;
fin;

define-nueva-instruccion busca como inicio
si frente-libre y  no junto-a-zumbador  y (izquierda-libre o derecha-libre) entonces inicio
avanza;
fin
sino inicio
si no junto-a-zumbador y frente-bloqueado o (izquierda-bloqueada y derecha-bloqueada) entonces inicio
gira(2);
avanzar;
gira(1);
si frente-bloqueado entonces inicio
gira(1);
avanzar;
apagate;
fin;
avanza;
si izquierda-bloqueada y derecha-bloqueada entonces inicio
gira(2);
avanza;
gira(3);
avanzar;
apagate;
fin;
gira(1);
fin;
si junto-a-zumbador entonces sal-de-instruccion;
fin;
busca;
fin;
    inicia-ejecucion
    repetir 100 veces inicio
    mientras no orientado-al-oeste hacer gira(1);
    avanzar;
    gira(1);
    avanzar;
    gira(2);
    busca;
    bobeda;
    fin;


        apagate;
    termina-ejecucion
finalizar-programa
