 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
