iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
 repetir 3 veces
  gira-izquierda;
fin;
define-nueva-instruccion media-vuelta como
inicio
 repetir 2 veces
  gira-izquierda;
fin;
define-nueva-instruccion come como
inicio
 repetir 12 veces
  inicio
   repetir 26 veces
    inicio
     si frente-libre entonces
      inicio
       si junto-a-zumbador entonces
        coge-zumbador;
       avanza;
      fin;
    fin;
   si junto-a-zumbador entonces
     coge-zumbador;
     media-vuelta;
     mientras frente-libre hacer
      avanza;
     gira-derecha;
     avanza;
     gira-derecha;
  fin;
 fin;
 define-nueva-instruccion esquina como
 inicio
  mientras no-orientado-al-oeste hacer
   gira-izquierda;
  mientras frente-libre hacer
   avanza;
  gira-izquierda;
  mientras frente-libre hacer
   avanza;
  media-vuelta;
 fin;
 define-nueva-instruccion cuenta(x) como
 inicio
  si junto-a-zumbador entonces
   inicio
    avanza;
    avanza;
    cuenta(sucede(x));
    sal-de-instruccion;
   fin
   sino
   inicio
    media-vuelta;
    avanza;
    repetir x veces
     avanza;
    gira-derecha;
    avanza;
    deja-zumbador;
   fin;
  fin;
define-nueva-instruccion piramide como
inicio
 mientras junto-a-zumbador hacer
  avanza;
 deja-zumbador;
 avanza;
 deja-zumbador;
 media-vuelta;
 mientras junto-a-zumbador y frente-libre hacer
  avanza;
 si frente-libre y no-junto-a-zumbador entonces
  inicio
   media-vuelta;
   avanza;
   cuenta(0);
  fin
  sino
  inicio
   media-vuelta;
   cuenta(0);
  fin;
 fin;
define-nueva-instruccion cuentar(x) como
inicio
 si junto-a-zumbador entonces
 inicio
  avanza;
  avanza;
  cuentar(sucede(x));
  avanza;
  deja-zumbador;
 fin
 sino
 inicio
  media-vuelta;
  repetir x veces
   avanza;
  avanza;
  gira-derecha;
 fin;
fin;
define-nueva-instruccion busca-error como
inicio
 si no-junto-a-zumbador entonces
  avanza;
 si no-junto-a-zumbador entonces
 inicio
  esquina;
  sal-de-instruccion;
 fin;
 mientras junto-a-zumbador hacer
  inicio
   si junto-a-zumbador entonces
    coge-zumbador;
   si no-junto-a-zumbador entonces
    deja-zumbador;
   avanza;
  fin;
  si no-junto-a-zumbador entonces
   inicio
    avanza;
    si no-junto-a-zumbador entonces
     inicio
      media-vuelta;
      avanza;
      avanza;
      mientras frente-libre y junto-a-zumbador hacer
      avanza;
      gira-derecha;
      avanza;
      gira-derecha;
      avanza;
      busca-error;
     fin
     sino
     inicio
      media-vuelta;
      avanza;
      avanza;
      si junto-a-zumbador entonces
      inicio
       media-vuelta;
       avanza;
       deja-zumbador;
       busca-error;
      fin
      sino
       inicio
        esquina;
       fin;
     fin;
   fin;
 fin;
 define-nueva-instruccion columna como
 inicio
  mientras junto-a-zumbador hacer
  inicio
   gira-derecha;
   avanza;
   gira-izquierda;
   avanza;
   si junto-a-zumbador entonces
    inicio
     sal-de-instruccion;
    fin
    sino
    inicio
     deja-zumbador;
   fin;
 fin;
fin;



 define-nueva-instruccion corrige como
 inicio
  coge-zumbador;
  esquina;
  gira-derecha;
  mientras junto-a-zumbador hacer
   avanza;
  media-vuelta;
  avanza;
  columna;
  esquina;
  gira-derecha;
  busca-error;
  esquina;
  gira-derecha;
 fin;
 define-nueva-instruccion final como
 inicio
  mientras junto-a-zumbador hacer
   inicio
    gira-izquierda;
    avanza;
    gira-derecha;
    avanza;
    si no-junto-a-zumbador entonces
     inicio
      media-vuelta;
      avanza;
      gira-izquierda;
      avanza;
      media-vuelta;
      apagate;
     fin;
   fin;
fin;
define-nueva-instruccion terminala como
inicio
 mientras junto-a-zumbador hacer
  avanza;
 deja-zumbador;
 avanza;
 deja-zumbador;
 esquina;
 gira-derecha;
 cuentar(0);
 corrige;
fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer
     gira-izquierda;
    come;
    esquina;
    gira-derecha;
    si algun-zumbador-en-la-mochila entonces
     inicio
     deja-zumbador;
     fin
    sino
    inicio
     apagate;
    fin;
    si algun-zumbador-en-la-mochila entonces
    piramide;
    esquina;
    gira-derecha;
    mientras algun-zumbador-en-la-mochila hacer
     terminala;
    final;
        apagate;
    termina-ejecucion
finalizar-programa
