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



define-nueva-instruccion checa (c) como inicio
 si junto-a-zumbador y no si-es-cero (c) entonces inicio
  coge-zumbador;
   checa (precede(c));
    deja-zumbador;
     fin
     sino inicio
    si junto-a-zumbador entonces gira (2);
   fin;
fin;



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

    fin
    sino inicio
    repetir m veces deja-zumbador;
    avanza;
   repetir m veces deja-zumbador;
 fin;
fin;



define-nueva-instruccion num (k) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  num (sucede(k));

   fin sino inicio
   mientras orientado-al-norte hacer inicio
   multiplo (0);
   repetir k veces deja-zumbador;
   checa (90);
   fin;

 fin;
fin;
 (*--------------------ENCUENTRA EL MINIMO COMUN MULTIPLO-----------------*)


 define-nueva-instruccion comun (n) como inicio
  si junto-a-zumbador y no si-es-cero (n) entonces inicio
   coge-zumbador;
    comun (precede(n));
     deja-zumbador;
     fin
     sino inicio
                     (*-----Se encontro el minimo COMUN!!!!!!------*)
     si no-junto-a-zumbador y si-es-cero (n) entonces inicio
     gira (3);
     repetir 2 veces avanza;
     gira (3);
     mientras frente-libre hacer avanza;

     fin;


  fin;
 fin;



 define-nueva-instruccion minimo (n) como inicio
  si junto-a-zumbador entonces inicio
   coge-zumbador;
    minimo (sucede(n));
    fin
     sino inicio
     mientras frente-libre hacer avanza;
     gira (3);
     avanza;
     gira (3);
     avanza;

     mientras junto-a-zumbador hacer inicio
     comun (n);
     si orientado-al-sur entonces apagate;
    avanza;
   fin;

  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 (2);

    num (0);

    mientras frente-libre hacer avanza;
    gira-izquierda;
    avanza;
    gira-izquierda;

    num (0);

    mientras frente-libre hacer avanza;
    gira (2);
    avanza;
    gira (2);

    mientras frente-libre hacer inicio
     minimo (0);
      gira (2);
       mientras frente-libre hacer avanza;
       gira-izquierda;
       avanza;
       gira-izquierda;
      mientras no-junto-a-zumbador hacer avanza;
     gira (2);
    fin;





        apagate;
    termina-ejecucion
finalizar-programa
