iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;

define-nueva-instruccion pasa como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
pasa;
deja-zumbador;
fin
sino inicio
gira(2);
mientras frente-libre hacer
avanza;
gira(1);
avanza;
mientras junto-a-zumbador hacer
coge-zumbador;
fin;
fin;

define-prototipo-instruccion dos(n);

define-nueva-instruccion busca4(n) como inicio
si junto-a-zumbador entonces inicio
repetir n veces inicio
si junto-a-zumbador y orientado-al-norte entonces inicio
coge-zumbador;
fin

fin;
si junto-a-zumbador y orientado-al-norte y junto-a-zumbador entonces inicio
repetir n veces
deja-zumbador;
dos(0);
fin
sino inicio
si junto-a-zumbador y orientado-al-este entonces inicio
gira(1);
si frente-libre entonces inicio
avanza;
fin;
busca4(n);
fin
sino inicio
si no junto-a-zumbador entonces inicio

si frente-libre entonces inicio
avanza;
fin;
busca4(n);
fin;
fin;
fin;
fin
sino inicio
gira(2);
mientras frente-libre hacer
avanza;
gira(1);
si frente-libre entonces inicio
avanza;
fin
sino inicio
gira(2);
mientras frente-libre hacer
avanza;
mientras junto-a-zumbador hacer
coge-zumbador;
repetir n veces
deja-zumbador;
gira(3);
mientras frente-libre hacer
avanza;
pasa;
apagate;
fin;
gira(1);
busca4(n);
fin;
fin;

define-nueva-instruccion dos(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
dos(sucede(n));
fin
sino inicio
si frente-libre entonces inicio
avanza;
fin;
busca4(n);
fin;
fin;

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

si orientado-al-norte entonces inicio
gira(2);
mientras frente-libre hacer
avanza;
gira(1);
si frente-libre entonces inicio
avanza;
busca(n);
fin;
fin
sino inicio
si orientado-al-este y junto-a-zumbador entonces inicio
gira(1);
busca(n);
fin
sino inicio
gira(2);
mientras frente-libre hacer
avanza;
gira(3);
busca(sucede(n));
fin;

fin;

fin;
fin;
    inicia-ejecucion
    busca(1);
        apagate;
    termina-ejecucion
finalizar-programa
