iniciar-programa
define-nueva-instruccion identifica(x) como
inicio
      si junto-a-zumbador entonces
      inicio
      coge-zumbador;
      identifica(precede(x));
      fin;
      si si-es-cero(x) entonces
    inicio
      mientras no-orientado-al-oeste hacer
      gira-izquierda;
      avanza;
      deja-zumbador;
      mientras no-orientado-al-norte hacer
      gira-izquierda;
      avanza;
      avanza;
      avanza;
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      gira-izquierda;
      gira-izquierda;
      avanza;
      avanza;
      avanza;
      gira-izquierda;
      avanza;
      gira-izquierda;
   fin;
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
fin;

define-nueva-instruccion menor-o-diez como
inicio
   identifica(10);
   gira-izquierda;
   avanza;
   mientras no-orientado-al-norte hacer
   gira-izquierda;
 fin;


define-nueva-instruccion suma1 como
inicio
mientras no-orientado-al-norte hacer
gira-izquierda;
mientras junto-a-zumbador hacer
inicio
    repetir 10 veces
    inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    fin
    sino
    inicio
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    avanza;
    fin;
    fin;
mientras no-orientado-al-norte hacer
gira-izquierda;
avanza;
avanza;
deja-zumbador;
gira-izquierda;
gira-izquierda;
avanza;
avanza;
fin;
fin;

define-nueva-instruccion suma2 como
inicio
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    avanza;
    repetir 10 veces
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    fin
    sino
    inicio
    mientras no-orientado-al-sur hacer
    gira-izquierda;
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    avanza;
    fin;
fin;

define-nueva-instruccion suma3 como
inicio
     si junto-a-zumbador entonces
     inicio
     coge-zumbador;
     suma3;
     deja-zumbador;
     fin
     sino
     inicio
     gira-izquierda;
     gira-izquierda;
     avanza;
     avanza;
     gira-izquierda;
     gira-izquierda;
     gira-izquierda;
     avanza;
     fin;
fin;

define-nueva-instruccion mayor-de-diez como
inicio
      suma1;
      suma2;
      avanza;
      suma3;
      mientras no-orientado-al-norte hacer
      gira-izquierda;
      coge-zumbador;
      avanza;
      avanza;
      avanza;
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      gira-izquierda;
      gira-izquierda;
      avanza;
      avanza;
      avanza;
      mientras no-orientado-al-norte hacer
      gira-izquierda;
  fin;

 define-nueva-instruccion amontona como
 inicio
 mientras junto-a-zumbador hacer
   inicio
 mientras no orientado-al-norte hacer
 gira-izquierda;
 mientras junto-a-zumbador hacer
 inicio
 mientras junto-a-zumbador hacer
 coge-zumbador;
 avanza
 fin;
 gira-izquierda;
 gira-izquierda;
 mientras frente-libre hacer
 avanza;
 mientras algun-zumbador-en-la-mochila hacer
 deja-zumbador;
 gira-izquierda;
 gira-izquierda;
 gira-izquierda;
 avanza;
 mientras no-orientado-al-norte hacer
 gira-izquierda;
     fin;
 fin;
inicia-ejecucion
avanza;
gira-izquierda;
gira-izquierda;
gira-izquierda;
mientras no-junto-a-zumbador hacer
avanza;
mientras junto-a-zumbador hacer
avanza;
gira-izquierda;
gira-izquierda;
avanza;
amontona;
mientras no-orientado-al-este hacer
gira-izquierda;
avanza;
mientras junto-a-zumbador hacer
avanza;
mientras no-orientado-al-oeste hacer
gira-izquierda;
avanza;
avanza;
mientras junto-a-zumbador hacer
     inicio
     mientras no-orientado-al-este hacer
     gira-izquierda;
     avanza;
     mientras no-orientado-al-norte hacer
     gira-izquierda;
repetir 10 veces
 si junto-a-zumbador entonces
 coge-zumbador;
      si junto-a-zumbador entonces
      inicio
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      mayor-de-diez;
      fin
      sino
      inicio
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      menor-o-diez;
      gira-izquierda;
      avanza;
      fin;
      fin;
      mientras no-orientado-al-este hacer
      gira-izquierda;
      avanza;
      mientras no-orientado-al-norte hacer
      gira-izquierda;
      avanza;
      avanza;
      mientras junto-a-zumbador hacer
      coge-zumbador;
      mientras no-orientado-al-este hacer
      gira-izquierda;
      avanza;
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      gira-izquierda;
      gira-izquierda;
      avanza;
      mientras no-orientado-al-sur hacer
      gira-izquierda;
      mientras frente-libre hacer
      avanza;
      mientras no-orientado-al-norte hacer
      gira-izquierda;
      repetir 10 veces
 si junto-a-zumbador entonces
 coge-zumbador;
      si junto-a-zumbador entonces
      inicio
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      mayor-de-diez;
      fin
      sino
      inicio
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      menor-o-diez;
      fin;
        apagate;
    termina-ejecucion
finalizar-programa
