iniciar-programa
define-nueva-instruccion mira-este como
inicio
   mientras no-orientado-al-este hacer
      gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
   mientras no-orientado-al-norte hacer
      gira-izquierda;
fin;
define-nueva-instruccion gira-derecha como
inicio
   repetir 3 veces
      gira-izquierda;
fin;
define-nueva-instruccion mira-oeste como
inicio
   mientras no-orientado-al-oeste hacer
      gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
   mientras no-orientado-al-sur hacer
      gira-izquierda;
fin;
define-nueva-instruccion paso-atras como
inicio
   repetir 2 veces
     gira-izquierda;
   avanza;
   avanza;
   avanza;
   repetir 2 veces
     gira-izquierda;
fin;
define-nueva-instruccion ubicate como
inicio
   mira-sur;
   mientras frente-libre hacer
     avanza;
   mira-oeste;
   mientras frente-libre hacer
     avanza;
   mira-norte;
fin;
define-nueva-instruccion copia como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      copia;
      deja-zumbador;
   fin
   sino
   inicio
      avanza;
      avanza;
   fin;
fin;
define-nueva-instruccion paso-atras1 como
inicio
   repetir 2 veces
     gira-izquierda;
   avanza;
   repetir 2 veces
     gira-izquierda;
fin;
define-nueva-instruccion muevete como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      muevete;
      avanza;
   fin
   sino
   inicio
      paso-atras1;
      gira-derecha;
   fin;
fin;
define-nueva-instruccion copia2 como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      copia2;
      deja-zumbador;
   fin
   sino
   inicio
      avanza;
   fin;
fin;
define-nueva-instruccion recuerda como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      recuerda;
      copia2;
      paso-atras1;
      gira-izquierda;
      si frente-libre entonces
        avanza;
      gira-derecha;
   fin
   sino
   inicio
      ubicate;
      repetir 2 veces
        avanza;
      gira-derecha;
      mientras no-junto-a-zumbador hacer
        avanza;
      gira-derecha;
      mientras frente-libre hacer
        avanza;
      gira-derecha;
      avanza;
      gira-derecha;
   fin;
fin;
define-nueva-instruccion posicionate como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      posicionate;
      avanzA;
   fin
   sino
   inicio
      ubicate;
      gira-derecha;
   fin;
fin;
define-nueva-instruccion recoge como
inicio
    si junto-a-zumbador entonces
    inicio
       coge-zumbador;
       recoge;
       deja-zumbador;
    fin
    sino
    inicio
       mira-oeste;
       mientras no-junto-a-zumbador y frente-libre hacer
          avanza;
       si junto-a-zumbador entonces
          paso-atras1;
    fin;
fin;
define-nueva-instruccion acomoda como
inicio
    mientras junto-a-zumbador hacer
    inicio
       recoge;
       mira-este;
       avanza;
       mientras no-junto-a-zumbador y frente-libre hacer
         avanza;
    fin;
fin;
define-nueva-instruccion pick como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      pick;
      deja-zumbador;
   fin
   sino
   inicio
      gira-derecha;
      avanza;
      gira-izquierda;
      mientras junto-a-zumbador hacer
         avanza;
   fin;
fin;
define-nueva-instruccion reacomoda como
inicio
   mientras junto-a-zumbador hacer
   inicio
       pick;
       mira-norte;
       avanza;
       mira-oeste;
       mientras frente-libre hacer
         avanza;
       mira-este;
       mientras no-junto-a-zumbador y frente-libre hacer
         avanza;
   fin;
fin;
define-nueva-instruccion cambios como
inicio
   repetir 3 veces
     avanzA;
   si junto-a-zumbador entonces
     coge-zumbador;
   muevete;
   deja-zumbador;
   ubicate;
   gira-derecha;
   avanza;
   gira-izquierda;
   repetir 3 veces
     avanza;
   recuerda;
   ubicate;
   repetir 4 veces
     avanza;
   si junto-a-zumbador entonces
     coge-zumbador;
   posicionate;
   acomoda;
   ubicate;
   avanza;
   gira-derecha;
   mientras no-junto-a-zumbador y frente-libre hacer
     avanza;
   reacomoda;
fin;
define-nueva-instruccion copia3(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      copia3(sucede(n));
      deja-zumbador;
   fin
   sino
   inicio
       repetir n veces
          deja-zumbador;
       avanzA;
   fin;
fin;
    inicia-ejecucion
    mira-norte;
    avanza;
    copia;
    copia3(0);
    paso-atras;
    gira-derecha;
    avanza;
    gira-izquierda;
    copia;
    ubicate;
    cambios;
    ubicate;
        apagate;
    termina-ejecucion
finalizar-programa
