iniciar-programa
define-nueva-instruccion mv como
inicio
repetir 2 veces gira-izquierda;
fin;
define-nueva-instruccion gd como
inicio
repetir 3 veces gira-izquierda;
fin;

define-nueva-instruccion contar como
inicio

si no (frente-bloqueado y derecha-bloqueada) entonces
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
contar;
deja-zumbador;
fin
sino
inicio
si frente-libre entonces
inicio
avanza;
contar;
fin
sino
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
mv;
mientras frente-libre hacer avanza;
gd; mientras frente-libre hacer avanza;
gd; deja-zumbador;
si frente-libre entonces avanza;
contar;
fin
sino
inicio
mv;
mientras frente-libre hacer avanza;
gira-izquierda; avanza;
gira-izquierda;
contar;
fin;
fin;

fin;



fin
sino
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
mv;
mientras frente-libre hacer avanza;
gd; mientras frente-libre hacer avanza;
gd; deja-zumbador;
fin
sino
inicio
mv;
mientras frente-libre hacer avanza;
gd; mientras frente-libre hacer avanza;
gd;
fin;

fin;



fin;







define-nueva-instruccion recoge2 como
inicio
mientras no (frente-bloqueado y derecha-bloqueada) hacer
inicio
mientras frente-libre hacer
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces
deja-zumbador;
fin;
avanza;
fin;
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces
deja-zumbador;
fin;
si derecha-libre entonces
inicio
mv;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces
deja-zumbador;
fin;
fin;
fin;
fin;



define-nueva-instruccion expandir como
inicio
repetir 4 veces
inicio
si frente-libre entonces
inicio
avanza;
si no-junto-a-zumbador entonces
repetir 2 veces deja-zumbador;
mv;
avanza;
mv;
fin;
gira-izquierda;
fin;
fin;


define-nueva-instruccion infecta como
inicio
si no(frente-bloqueado y derecha-bloqueada) entonces
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces expandir;
deja-zumbador;
fin;
si frente-libre entonces
inicio
avanza;
fin
sino
inicio
mv;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin;
infecta;
fin
sino
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
si no-junto-a-zumbador entonces expandir;
deja-zumbador;
fin;
mv;
recoge2;
fin;
fin;


define-nueva-instruccion dias como
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
dias;
mientras no-orientado-al-norte hacer gira-izquierda;
infecta;
fin;
fin;


inicia-ejecucion
dias;
mv;
contar;
apagate;
termina-ejecucion
finalizar-programa