iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
define-nueva-instruccion casa como inicio
mientras no-orientado-al-sur hacer gira(1);
mientras frente-libre hacer avanza;
gira(3);
mientras frente-libre hacer avanza;
gira(2);
fin;
define-nueva-instruccion ve como repetir 4 veces inicio
si frente-libre entonces inicio
avanza;
si no-junto-a-zumbador entonces deja-zumbador;
gira(2);
avanza;
gira(2);
fin;
gira(1);
fin;
define-nueva-instruccion reparte como
mientras frente-libre o izquierda-libre hacer
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si junto-a-zumbador entonces ve sino deja-zumbador;
fin;
si frente-libre entonces avanza;
si frente-bloqueado y izquierda-libre entonces
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si junto-a-zumbador entonces ve sino deja-zumbador;
fin;
gira(2);
mientras frente-libre hacer avanza;
gira(3);
avanza;
gira(3);
fin;
si frente-bloqueado y izquierda-bloqueada entonces
si junto-a-zumbador entonces
inicio
coge-zumbador;
si junto-a-zumbador entonces ve sino deja-zumbador;
fin;
fin;
define-nueva-instruccion marca como
mientras frente-libre o izquierda-libre hacer
inicio
si junto-a-zumbador entonces deja-zumbador;
si frente-libre entonces avanza;
si frente-bloqueado y izquierda-libre entonces
inicio
gira(2);
si junto-a-zumbador entonces deja-zumbador;
mientras frente-libre hacer avanza;
gira(3);
avanza;
gira(3);
fin;
si frente-bloqueado y izquierda-bloqueada
entonces si junto-a-zumbador entonces deja-zumbador;
fin;
define-nueva-instruccion cuenta(a) como
si junto-a-zumbador entonces
inicio
coge-zumbador;
cuenta(sucede(a));
fin sino
inicio
repetir a veces inicio
marca;
casa;
reparte;
casa;
fin;
fin;
define-nueva-instruccion todos(a) como
mientras izquierda-libre o izquierda-bloqueada hacer
inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
todos(sucede(a));
fin;
si frente-libre entonces avanza sino
inicio
gira(2);
mientras frente-libre hacer avanza;
si frente-bloqueado entonces gira(3);
si frente-libre entonces avanza sino
inicio
gira(3);
mientras frente-libre hacer avanza;
repetir a veces deja-zumbador;
apagate;
fin;
gira(3);
fin;
fin;








    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
    cuenta(0);
    mientras frente-libre hacer avanza;
    gira(1);
    mientras frente-libre hacer avanza;
    gira(1);
    todos(0);





        apagate;
    termina-ejecucion
finalizar-programa
