iniciar-programa
 define-nueva-instruccion g(n) como
 inicio
     repetir n veces
     gira-izquierda;
 fin;
 define-nueva-instruccion r como
 inicio
     si junto-a-zumbador entonces
     inicio
        coge-zumbador;
        r;
        avanza;
     fin;
     deja-zumbador;

 fin;
  define-nueva-instruccion r1 como
 inicio
     si junto-a-zumbador entonces
     inicio
        coge-zumbador;
        avanza;
        r1;
     fin
     sino
     inicio
        g(2);
        avanza;
     fin;
     deja-zumbador;
 fin;
 define-nueva-instruccion m como
 inicio
      r;
    deja-zumbador;
    g(2);
    r1;
    repetir 2 veces
    coge-zumbador;
 fin;
 define-nueva-instruccion a como
 inicio
   si no-junto-a-zumbador entonces
   inicio
     deja-zumbador;
     avanza;
     g(3);
     avanza;
     g(1);
     a;
   fin;
 fin;
 define-nueva-instruccion b como
 inicio
 repetir 4 veces
 inicio
  g(3);
     avanza;
     g(3);
     avanza;
     g(1);
    a;
  fin;
 fin;
    inicia-ejecucion
si junto-a-zumbador entonces
inicio
  si junto-a-zumbador entonces
  coge-zumbador;
si junto-a-zumbador entonces
  inicio
  deja-zumbador;


    mientras no-orientado-al-norte hacer
    g(1);
    m;
     mientras no-orientado-al-este hacer
    g(1);
    m;
     mientras no-orientado-al-sur hacer
    g(1);
    m;
     mientras no-orientado-al-oeste hacer
    g(1);
    m;
    mientras junto-a-zumbador hacer
    coge-zumbador;
    mientras no-junto-a-zumbador hacer
    avanza;
    b;



  fin
  sino
  inicio
     si frente-libre entonces
     inicio
       avanza;
       deja-zumbador;
       g(2);
       avanza;
       avanza;
       deja-zumbador;
       g(2);
       avanza;
       g(3); avanza;
       deja-zumbador;
       g(2);
       avanza;
       avanza;
       deja-zumbador;
     fin;
   fin;
 fin
 sino
 deja-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
