iniciar-programa
 define-nueva-instruccion inv como
  inicio
   gira-izquierda;
   gira-izquierda;
  fin;
 define-nueva-instruccion der como
  inicio
   repetir 3 veces
    gira-izquierda;
  fin;
 define-nueva-instruccion rec como
  inicio
   mientras frente-libre hacer
    avanza;
  fin;
 define-nueva-instruccion vac como
  inicio
   mientras junto-a-zumbador hacer
    coge-zumbador;
  fin;
 define-nueva-instruccion dos como
  inicio
   si izquierda-bloqueada entonces
    inicio
     avanza;
     dos;
     deja-zumbador;
     deja-zumbador;
    fin
   sino
    inicio
     rec;
     der;
    fin;
  fin;
 define-nueva-instruccion tre como
  inicio
   si izquierda-bloqueada entonces
    inicio
     avanza;
     tre;
     repetir 3 veces
      deja-zumbador;
    fin
   sino
    inicio
     rec;
     gira-izquierda;
     avanza;
     avanza;
    fin;
  fin;
 define-nueva-instruccion mov(n) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     mov(n);
     deja-zumbador;
    fin
   sino
    inicio
     repetir n veces
      avanza;
    fin;
  fin;
 define-nueva-instruccion com como
  inicio
   mientras no-orientado-al-este hacer
    gira-izquierda;
   mientras no-junto-a-zumbador hacer
    avanza;
   repetir 300 veces
    coge-zumbador;
   inv;
   rec;
   der;
   avanza;
   avanza;
   der;
   rec;
   inv;
   dos;
   repetir 3 veces
    avanza;
   der;
   rec;
   inv;
   tre;
   inv;
   mientras junto-a-zumbador hacer
    inicio
     coge-zumbador;
     avanza;
     deja-zumbador;
     inv;
     avanza;
     avanza;
    fin;
   si orientado-al-sur entonces
    inicio
     avanza;
     vac;
     inv;
     avanza;
     avanza;
     mov(1);
     inv;
     mov(4);
     inv;
    fin
   sino
    inicio
     avanza;
     vac;
     inv;
     avanza;
     avanza;
     mov(1);
     mov(1);
     inv;
    fin;
  fin;
    inicia-ejecucion
     com;
        apagate;
    termina-ejecucion
finalizar-programa
