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

define-nueva-instruccion checa(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
checa(sucede(n));
fin
sino inicio
repetir n veces deja-zumbador;
repetir 8 veces inicio
si junto-a-zumbador entonces
coge-zumbador;
fin;
si junto-a-zumbador entonces inicio
repetir 8 veces deja-zumbador;
fin
sino inicio
repetir n veces deja-zumbador;
deja-zumbador;
fin;
fin;
fin;

define-nueva-instruccion cuenta(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
cuenta(sucede(n));
fin
sino inicio
repetir n veces deja-zumbador;
repetir 8 veces inicio
si junto-a-zumbador entonces
coge-zumbador;
fin;
si junto-a-zumbador entonces inicio
repetir 8 veces deja-zumbador;
gira(2);
si frente-libre entonces inicio
avanza;
checa(0);
si izquierda-libre entonces inicio
gira(1);
avanza;
checa(0);
gira(2);
avanza;
gira(1);
fin;
si derecha-libre entonces inicio
gira(3);
avanza;
checa(0);
gira(2);
avanza;
gira(3);
fin;
gira(2);
avanza;
gira(2);
fin;
gira(2);
si frente-libre entonces inicio
avanza;
checa(0);
si izquierda-libre entonces inicio
gira(1);
avanza;
checa(0);
gira(2);
avanza;
gira(1);
fin;
si derecha-libre entonces inicio
gira(3);
avanza;
checa(0);
gira(2);
avanza;
gira(3);
fin;
gira(2);
avanza;
gira(2);
fin;
si izquierda-libre entonces inicio
gira(1);
avanza;
checa(0);
gira(2);
avanza;
gira(1);
fin;
si derecha-libre entonces inicio
gira(3);
avanza;
checa(0);
gira(2);
avanza;
gira(3);
fin;
fin
sino inicio
repetir n veces deja-zumbador;
sal-de-instruccion;
fin;
fin;
fin;

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

cuenta(0);
si frente-libre entonces inicio
avanza;
busca;
fin
sino inicio
gira(2);
mientras frente-libre hacer
avanza;
gira(1);
si frente-libre entonces inicio
avanza;
gira(1);
busca;
fin
sino inicio
apagate;
fin;
fin;

fin;
fin;
    inicia-ejecucion
    mientras no orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira(3);
    mientras frente-libre hacer avanza;
    gira(3);
    busca;
        apagate;
    termina-ejecucion
finalizar-programa
