iniciar-programa
define-nueva-instruccion gira(n) como inicio
   repetir n veces gira-izquierda;
   fin;
define-nueva-instruccion xD(n) como inicio
   si junto-a-zumbador entonces inicio
      coge-zumbador;
      xD(sucede(n));
      fin;
   si orientado-al-este y no-junto-a-zumbador entonces inicio
      gira(2);
      mientras frente-libre hacer avanza;
      gira(2);
      mientras junto-a-zumbador hacer avanza;
      repetir n veces deja-zumbador;
      fin;
   fin;
define-nueva-instruccion acomoda(n) como inicio
   si junto-a-zumbador y orientado-al-este entonces inicio
      si frente-libre entonces inicio
         avanza;
         fin
      sino gira(1);
      acomoda(sucede(n));
      fin;
   si orientado-al-este entonces gira(1);
   gira(1);
   mientras frente-libre hacer avanza;
   gira(2);
   repetir n veces inicio
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
      xD(0);
      si frente-libre entonces avanza;
      fin;
   apagate;
   fin;
define-nueva-instruccion atiende(n) como inicio
   si no-junto-a-zumbador y frente-libre entonces avanza;
   si si-es-cero(n) entonces acomoda(0);
   si junto-a-zumbador entonces inicio
      coge-zumbador;
      atiende(precede(n));
      fin;
   si frente-libre entonces avanza;
   si no-junto-a-zumbador entonces inicio
      gira(2);
      mientras frente-libre hacer avanza;
      gira(2);
      apagate;
      fin;
   atiende(n);
   fin;
define-nueva-instruccion kilos(n) como inicio
   si junto-a-zumbador entonces inicio
      coge-zumbador;
      kilos(sucede(n));
      fin;
   gira(2);
   avanza;
   gira(1);
   atiende(n);
   fin;
  inicia-ejecucion
    gira(1);
    avanza;
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
    kilos(0);
      apagate;
    termina-ejecucion
finalizar-programa
