iniciar-programa
define-nueva-instruccion gira(g) como repetir g veces gira-izquierda;
define-nueva-instruccion busca(n) como inicio
coge-zumbador;
repetir 2 veces inicio
si frente-libre entonces inicio
avanza;
si junto-a-zumbador entonces inicio
gira(2);
avanza;
deja-zumbador;
gira-izquierda;
fin
sino inicio
gira(2);
avanza;
gira-izquierda;
fin;
fin
sino inicio
gira(2);
si orientado-al-oeste y no junto-a-zumbador entonces
gira-izquierda;
fin;
fin;
gira-izquierda;
repetir 2 veces inicio
si frente-libre entonces inicio
avanza;
gira(3);
si frente-libre entonces inicio
avanza;
si junto-a-zumbador entonces inicio
gira(2);
avanza;
gira-izquierda;
avanza;
deja-zumbador;
gira(3);
fin
sino inicio
gira(2);
avanza;
gira-izquierda;
avanza;
gira(3);
fin;
fin
sino inicio
gira(3);
avanza;
gira(3);
fin;
fin
sino inicio
gira-izquierda;
fin;
fin
fin;



define-nueva-instruccion recoge(t) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
recoge(sucede(t));
deja-zumbador;
fin
sino inicio
si frente-bloqueado entonces inicio
gira(1);
si frente-bloqueado entonces inicio
gira-izquierda;
mientras frente-libre hacer
avanza;
repetir t veces deja-zumbador;
apagate;
fin;
avanza;
gira(1);
mientras frente-libre hacer
avanza;
gira(2);
recoge(t);
fin
sino inicio
avanza;
recoge(t);
fin;
fin;
fin;

    inicia-ejecucion
    mientras no orientado-al-norte hacer
    gira-izquierda;
    repetir 2 veces inicio
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    fin;
    mientras no junto-a-zumbador hacer inicio
    mientras frente-libre y no junto-a-zumbador hacer    avanza;
    si frente-bloqueado entonces inicio
    gira(2);
    mientras frente-libre hacer   avanza;
    gira(3);
    AVANZA;
    gira(3);
    fin;
    fin;
    gira-izquierda;
    mientras junto-a-zumbador hacer inicio
    busca(0);
    gira(3);
    si frente-libre entonces inicio
    avanza;
    si no junto-a-zumbador entonces inicio
    gira(3);
    avanza;
    gira(3);
    avanza;
    si no junto-a-zumbador entonces inicio
    gira(3);
    avanza;
    avanza;
    recoge(0);
    fin;
    mientras junto-a-zumbador y frente-libre hacer  avanza;
    gira(2);
    mientras no junto-a-zumbador hacer
    avanza;
    fin;
    fin
    sino inicio
    gira(3);
    avanza;
    gira(3);
    mientras junto-a-zumbador y frente-libre hacer
    avanza;
    gira(2);
    avanza;
    si derecha-bloqueada entonces inicio
    mientras frente-libre hacer
    avanza;
    coge-zumbador;
    gira-izquierda;
    recoge(0);
    fin;
    fin;
    fin;
    gira-izquierda;
    avanza;
    gira-izquierda;
    avanza;
    gira(3);
    avanza;
    recoge(0);


        apagate;
    termina-ejecucion
finalizar-programa
