iniciar-programa
define-nueva-instruccion gd como repetir 3 veces gira-izquierda;

define-nueva-instruccion cambia como inicio
   repetir 2 veces gira-izquierda; avanza; gira-izquierda;
   avanza;gira-izquierda;avanza;
fin;

define-nueva-instruccion regresa como inicio
   repetir 2 veces gira-izquierda; avanza; gd;
   avanza;gd;avanza;
fin;


define-nueva-instruccion multiplica(n) como inicio
   si junto-a-zumbador entonces inicio
       coge-zumbador;
       gd;
       avanza;
       gd;
       repetir 2 veces avanza;
       gd;
       avanza;
       repetir 2 veces gira-izquierda;
       repetir n veces deja-zumbador;
       avanza;
       gira-izquierda;
       repetir 2 veces avanza;
        gira-izquierda;
        avanza;
        gd;
        multiplica(n);
   fin
   sino inicio
       gd;
       avanza;
       gd;
       mientras frente-libre hacer avanza;
   fin;
fin;


define-nueva-instruccion cuenta(n) como inicio
   si junto-a-zumbador entonces inicio
      coge-zumbador;
      cuenta(sucede(n));
   fin
   sino inicio
     avanza;
      multiplica(n);
   fin;
fin;

define-nueva-instruccion divide(x) como inicio
   si junto-a-zumbador entonces inicio
       cambia;
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          regresa;
          coge-zumbador;
          divide(sucede(x));
       fin
       sino inicio
          repetir 2 veces gira-izquierda;
          avanza;
          repetir x veces deja-zumbador;
       fin;
   fin
   sino inicio
      avanza;
      gd;
      avanza;
      deja-zumbador;
      repetir 2 veces gira-izquierda;
      avanza;
      gira-izquierda;
      avanza;
      repetir 2 veces gira-izquierda;
      repetir x veces deja-zumbador;
      divide(0);
   fin;
fin;


    inicia-ejecucion
    avanza;
    gira-izquierda;
    repetir 2 veces avanza;
    gira-izquierda;
    avanza;
    gd;

    cuenta(0);
    gira-izquierda;
    avanza;
    gira-izquierda;
    repetir 2 veces avanza;

    divide(0);




        apagate;
    termina-ejecucion
finalizar-programa
