iniciar-programa

define-nueva-instruccion gira (n) como inicio
repetir n veces gira-izquierda;
fin;

define-nueva-instruccion multiplica2 (t) como inicio
           si junto-a-zumbador entonces inicio
              coge-zumbador;
              multiplica2 (t);
              repetir t veces deja-zumbador;
           fin;
fin;


define-nueva-instruccion multiplica (t) como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       multiplica (sucede(t));
    fin
    sino inicio
    repetir precede(t) veces deja-zumbador;
    avanza;
        multiplica2 (t);
    fin;
fin;


define-nueva-instruccion clona como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       clona;
       deja-zumbador;


    fin
    sino inicio
    gira (3);
    avanza;
    avanza;
    gira (3);
    avanza;
    fin;
fin;

define-nueva-instruccion fact (m) como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       fact (sucede(m));
       deja-zumbador;
    fin
    sino inicio
        repetir precede(m) veces deja-zumbador;
        avanza;

    fin;
fin;

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

    fin
    sino inicio
       avanza;
       gira (3);
       fact (0);
       gira (2);
       avanza;
       gira (2);
       repetir precede(k) veces inicio
          multiplica (0);
          gira (2);
          avanza;
          gira (2);
       fin;

       avanza;
       clona;

       apagate;

    fin;
fin;

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

fin;




    inicia-ejecucion
    avanza;
    avanza;
    arq (0);
        apagate;
    termina-ejecucion
finalizar-programa
