iniciar-programa
define-nueva-instruccion i como
 inicio
  gira-izquierda;
  gira-izquierda;
 fin;
define-nueva-instruccion av como
 inicio
  avanza;
  avanza;
 fin;
define-nueva-instruccion a como
 inicio
    mientras no-orientado-al-norte hacer
        gira-izquierda;
    mientras frente-libre hacer
        avanza;
    i;
    gira-izquierda;
    mientras frente-libre o derecha-libre hacer
    inicio
    si junto-a-zumbador entonces
        coge-zumbador;
    si frente-libre entonces
    inicio
        avanza;
    fin
    sino
    inicio
    i;
    mientras frente-libre hacer
        avanza;
    gira-izquierda;
    avanza;
    gira-izquierda;
    si derecha-bloqueada entonces
    inicio
        gira-izquierda;
        i;
    fin;
    fin;
    fin;
    si junto-a-zumbador entonces
     coge-zumbador;
    si orientado-al-este entonces
     inicio
      i;
      mientras frente-libre hacer
          avanza;
      gira-izquierda;
      avanza;
     fin;
    gira-izquierda;
    avanza;
    mientras junto-a-zumbador hacer
        avanza;
    mientras algun-zumbador-en-la-mochila hacer
        deja-zumbador;
 fin;
 define-nueva-instruccion div como
  inicio
   si algun-zumbador-en-la-mochila entonces
    inicio
     deja-zumbador;
     deja-zumbador;
     div;
     coge-zumbador;
    fin
  fin;
 define-nueva-instruccion res como
  inicio
   si junto-a-zumbador entonces
   inicio
   coge-zumbador;
   res;
   coge-zumbador;
   fin
   sino
   inicio
   i;
   avanza;
   fin;
  fin;
 define-nueva-instruccion mov como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     mov;
     deja-zumbador;
    fin
   sino
    inicio
     av;
    fin;
  fin;
 define-nueva-instruccion d como
  inicio
     res;
     i;
     av;
     div;
     avanza;
     mientras algun-zumbador-en-la-mochila hacer
         deja-zumbador;
     i;
     av;
     avanza;
     si junto-a-zumbador entonces
      inicio
       coge-zumbador;
       si junto-a-zumbador entonces
        inicio
         coge-zumbador;
         i;
         av;
         avanza;
         deja-zumbador;
         deja-zumbador;
         i;
         av;
         av;
        fin
       sino
        inicio
         avanza;
         deja-zumbador;
        fin;
      fin
     sino
      inicio
       avanza;
      fin;
      i;
      av;
      avanza;
      i;
      mov;
  fin;
    inicia-ejecucion
    a;
    i;
    si no-junto-a-zumbador entonces
     apagate;
    avanza;
    a;
    d;
   mientras junto-a-zumbador hacer
    inicio
     avanza;
     a;
     d;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
