iniciar-programa
define-nueva-instruccion gira (e) como inicio
repetir e veces gira-izquierda;
fin;


define-nueva-instruccion cambia (m) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   cambia (m);
    deja-zumbador;
     fin
     sino inicio
     repetir m veces deja-zumbador;
     gira (2);
    avanza;
   fin;
fin;


define-nueva-instruccion menor2 (k) como inicio
 si junto-a-zumbador y no si-es-cero (k) entonces inicio
  coge-zumbador;
   menor2 (precede(k));
   deja-zumbador;
   fin
   sino inicio
                             (*   2 MONTON ES MENOR *)
   si no si-es-cero (k) y no-junto-a-zumbador entonces gira (2);
 fin;
fin;


define-nueva-instruccion menor (m) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   menor (sucede(m));
    fin
    sino inicio

    avanza;
    menor2 (m);
    si orientado-al-este entonces inicio
    cambia (m);
    fin
    sino inicio
    avanza;
   repetir m veces deja-zumbador;
  fin;
 fin;
fin;
(*-----------------------------------------------------*)


define-nueva-instruccion resta (k) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
   resta (precede(k));
    fin
    sino inicio
   repetir k veces deja-zumbador;
 fin;
fin;


define-nueva-instruccion divide2 (k) como inicio
 mientras junto-a-zumbador y orientado-al-este hacer inicio
  repetir k veces inicio
   si junto-a-zumbador y orientado-al-este entonces inicio
    coge-zumbador;
     fin
     sino inicio
     mientras no-orientado-al-norte hacer gira-izquierda;
     deja-zumbador;
     fin;
     fin;

   fin;
 si junto-a-zumbador entonces resta (k);
 gira (3);

fin;


define-nueva-instruccion divide (k) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  divide (sucede(k));
   fin
    sino inicio
    repetir k veces deja-zumbador;
    avanza;
    gira (2);
   divide2 (k);

 fin;
fin;
(*-------------------------------------------*)


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


    inicia-ejecucion

    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;

    mientras junto-a-zumbador hacer inicio
    menor (0);
    gira (2);
    avanza;
    gira (2);

              (* EL MENOR ESTA A LA DERECHA  -->  !!!!!!*)

    divide (0);
    fin;

    mientras no-orientado-al-este hacer gira-izquierda;
    avanza;
    max;





        apagate;
    termina-ejecucion
finalizar-programa
