iniciar-programa
define-nueva-instruccion g(f) como repetir f veces gira-izquierda;
define-nueva-instruccion erosion como inicio
    deja-zumbador;
si izquierda-bloqueada entonces inicio
 g(3);
 avanza;
 g(1);
fin;
mientras derecha-libre hacer inicio
si junto-a-zumbador entonces inicio
mientras junto-a-zumbador hacer avanza;
g(2);
si frente-libre entonces avanza;
g(2);
coge-zumbador;
g(3);
avanza;
g(3);
si frente-libre entonces avanza;
si no-junto-a-zumbador entonces inicio
  mientras frente-libre hacer avanza;
  si junto-a-zumbador entonces inicio
     g(2);
      mientras junto-a-zumbador hacer avanza;
      avanza;
      deja-zumbador;
      g(2);
      mientras frente-libre hacer avanza;
      g(2);
 fin;
 si no-junto-a-zumbador entonces inicio
     g(3);
     avanza;
     g(3);
     mientras junto-a-zumbador hacer avanza;
     deja-zumbador;
     g(2);
     mientras frente-libre hacer avanza;
     g(1);
     avanza;
     g(1);
 fin;
fin;
si junto-a-zumbador y orientado-al-sur entonces inicio
  mientras frente-libre hacer avanza;
  g(3);
  avanza;
  g(3);
  mientras junto-a-zumbador hacer avanza;
  deja-zumbador;
  g(2);
   mientras frente-libre hacer avanza;
  g(1);
  avanza;
  g(1);
fin;
fin;
si no-junto-a-zumbador entonces inicio
  g(3);
  si frente-libre entonces avanza;
  g(1);
fin;
fin;
  si derecha-bloqueada entonces inicio
    g(1);
    mientras frente-libre y no-junto-a-zumbador  hacer avanza;
    g(3);
    mientras izquierda-libre hacer inicio
        si junto-a-zumbador entonces inicio
            mientras junto-a-zumbador hacer avanza;
            mientras frente-libre y no-junto-a-zumbador hacer avanza;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                g(2);
                mientras no-junto-a-zumbador hacer avanza;
                g(2);
                avanza;
                g(2);
                deja-zumbador;
                mientras frente-libre hacer avanza;
                g(2);
            fin sino inicio
                g(2);
                mientras frente-libre hacer avanza;
                g(3);
                avanza;
                g(3);
            fin;
        fin sino inicio
            g(1);
            avanza;
            g(3);
        fin;
    fin;
  fin;
 fin;
inicia-ejecucion
    mientras algun-zumbador-en-la-mochila hacer erosion;
    mientras junto-a-zumbador hacer coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa

