iniciar-programa
define-nueva-instruccion gira(n) como inicio
    repetir n veces gira-izquierda;
fin;
define-nueva-instruccion copia(s) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        copia(sucede(s));
    fin
    sino inicio
        repetir s veces deja-zumbador;
        gira(2);
        avanza;
        repetir s veces deja-zumbador;
    fin;
fin;

define-nueva-instruccion vos(s) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        vos(sucede(s));
    fin
    sino inicio
    avanza;
    copia(0);
    repetir s veces coge-zumbador;
    fin;
fin;

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

define-nueva-instruccion factores(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        factores(sucede(n));
    fin
    sino inicio
    avanza;
    gira(3);
    repetir n veces inicio
    a(0);
    si junto-a-zumbador entonces coge-zumbador;
    fin;
    fin;
fin;


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

define-nueva-instruccion ho(k) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        ho(sucede(k));
    fin
    sino inicio
        avanza;
        ka(k);
    fin;
fin;
define-nueva-instruccion sss(g) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
sss(sucede(g));
fin
sino inicio
avanza;
avanza;
repetir g veces deja-zumbador;
fin;
fin;
    inicia-ejecucion
    avanza;
    vos(0);
    gira(2);
    factores(0);
    gira(2);
    mientras junto-a-zumbador hacer coge-zumbador;
    avanza;
    mientras frente-libre hacer ho(0);
    gira(1);
    sss(0);


        apagate;
    termina-ejecucion
finalizar-programa
