iniciar-programa
define-nueva-instruccion norte como inicio
mientras no orientado-al-norte hacer
gira-izquierda;
fin;
define-nueva-instruccion sur como inicio
mientras no orientado-al-sur hacer
gira-izquierda;
fin;
define-nueva-instruccion este como inicio
mientras no orientado-al-este hacer
gira-izquierda;
fin;
define-nueva-instruccion oeste como inicio
mientras no orientado-al-oeste hacer
gira-izquierda;
fin;

define-nueva-instruccion lado1(a) como inicio
si derecha-bloqueada entonces inicio
    avanza;
    lado1(sucede(a));
    repetir 2 veces deja-zumbador;
fin sino inicio
    oeste;
    mientras frente-libre hacer
    avanza;
    sur;
    mientras frente-libre hacer avanza;
fin;
fin;
define-nueva-instruccion lado2(b) como inicio
si izquierda-bloqueada entonces inicio
    avanza;
    lado2(sucede(b));
    repetir 2 veces deja-zumbador;
fin sino inicio
    oeste;
    mientras frente-libre hacer
    avanza;
    sur;
    mientras frente-libre hacer avanza;
fin;
fin;

define-nueva-instruccion divide(z) como inicio
 si junto-a-zumbador entonces inicio

  repetir z veces inicio
     si junto-a-zumbador entonces inicio
         coge-zumbador;
         norte;
         avanza;
         este;
         avanza;
         deja-zumbador;
         sur;
         avanza;
         oeste;
         avanza;
     fin sino inicio
         norte;
         avanza;
         deja-zumbador;
         sur;
         avanza;
     fin;
  fin;
  divide(z);
  deja-zumbador;
 fin;


fin;

define-nueva-instruccion res(x) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
res(x);
coge-zumbador;
fin sino inicio
repetir x veces deja-zumbador;
fin;
fin;

define-nueva-instruccion come(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
come(sucede(n));
deja-zumbador;
fin sino inicio
oeste;
avanza;
     divide(n);
     norte;
     avanza;
     si junto-a-zumbador entonces inicio
       res(n);
       sur;
       avanza;
       coge-zumbador;
     fin sino inicio
         sur;
         avanza;
     fin;
     este;
     avanza;
fin;
fin;

define-nueva-instruccion malla como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
malla;
deja-zumbador;
fin sino inicio
sur;
avanza;
este;
avanza;
avanza;
fin;
fin;

define-nueva-instruccion poste(a) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 poste(sucede(a));
 fin sino inicio
     este;
     avanza;
     avanza;
     repetir a veces deja-zumbador;
     oeste;
     avanza;
     norte;
     avanza;
     repetir a veces coge-zumbador;
     malla;
fin;
fin;
    inicia-ejecucion
    repetir 4 veces deja-zumbador;
    norte;
    avanza;
    avanza;
    este;
    avanza;
    norte;
    lado1(0);
    norte;
    avanza;
    este;
    avanza;
    avanza;
    lado2(0);
    este;
    avanza;
    come(0);
    oeste;
    avanza;
    poste(0);
    oeste;
    avanza;
    avanza;
    avanza;
    norte;
    avanza;
    mientras junto-a-zumbador hacer coge-zumbador;

        apagate;
    termina-ejecucion
finalizar-programa
