iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
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 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 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 mira como
inicio
mientras no-junto-a-zumbador y frente-libre hacer avanza;
si frente-libre o junto-a-zumbador entonces
inicio
si junto-a-zumbador entonces coge-zumbador;
mira;
deja-zumbador;
fin
sino
si derecha-libre entonces
inicio
gira(3);
avanza;
gira(3);
mientras frente-libre hacer avanza;
gira(2);
fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer gira(1);
    cuenta(0);
    mientras frente-libre hacer avanza;
    gira(1);
    mientras frente-libre hacer avanza;
    gira(2);
    si frente-libre entonces mientras frente-libre hacer mira sino
    inicio gira(3);
    mira;fin;
        apagate;
    termina-ejecucion
finalizar-programa
