iniciar-programa
define-nueva-instruccion gira(N) como repetir n veces gira-izquierda;
define-nueva-instruccion ava(N) como repetir n veces avanza;
define-nueva-instruccion lleva(x) como
si junto-a-zumbador entonces
inicio
    coge-zumbador;
    lleva(x);
    deja-zumbador;
fin
sino
inicio
    gira(2);
    ava(1);
fin;
define-nueva-instruccion clona(z) como
si junto-a-zumbador entonces
inicio
    coge-zumbador;
    clona(sucede(z));
fin
sino
inicio
    repetir z veces deja-zumbador;
    gira(2);
    ava(1);
    repetir z veces deja-zumbador;
    gira(2);
    ava(1);
fin;
define-nueva-instruccion che(a) como repetir a veces si junto-a-zumbador entonces coge-zumbador;
define-nueva-instruccion coc(a) como
inicio
    repetir a veces si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        gira(2);
        ava(1);
        deja-zumbador;
        gira(2);
        ava(1);
    fin;
    si junto-a-zumbador entonces
    inicio
        gira(2);
        ava(1);
        mientras junto-a-zumbador hacer coge-zumbador;
        gira(2);
        ava(1);
        gira(3);
        ava(1);
        gira(1);
        ava(1);
        gira(1);
        ava(1);
        deja-zumbador;
        gira(2);
        ava(1);
        gira(3);
        ava(1);
        gira(3);
        ava(1);
        gira(3);
        si junto-a-zumbador entonces coc(a);
    fin
    sino
    inicio
        gira(2);
        ava(1);
        clona(0);
        che(precede(a));
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            gira(2);
            ava(1);
            mientras junto-a-zumbador hacer coge-zumbador;
            gira(3);
            ava(1);
            gira(1);
            ava(1);
            gira(1);
            ava(1);
            deja-zumbador;
        fin
        sino
        inicio
            gira(2);
            ava(1);
            lleva(0);
        fin;
    fin;
fin;
define-nueva-instruccion div(a) como
si junto-a-zumbador entonces
inicio
    coge-zumbador;
    div(sucede(a));
fin
sino
inicio
    repetir a veces deja-zumbador;
    gira(2);
    ava(1);
    gira(1);
    ava(1);
    gira(1);
    ava(1);
    coc(a);
fin;
define-nueva-instruccion res(a) como
si junto-a-zumbador entonces
inicio
    coge-zumbador;
    res(a);
    repetir a veces deja-zumbador;
fin
sino
inicio
    gira(1);
    ava(1);
    gira(3);
    ava(1);
    gira(3);
    ava(1);
fin;
define-nueva-instruccion mtp(a) como
si junto-a-zumbador entonces
inicio
    coge-zumbador;
    mtp(sucede(a));
fin
sino
inicio
    gira(1);
    ava(1);
    res(a);
fin;
    inicia-ejecucion
    ava(1);
    gira(1);
    ava(3);
    gira(1);
    ava(1);
    mtp(0);
    gira(2);
    ava(2);
    gira(1);
    ava(1);
    div(0);
        apagate;
    termina-ejecucion
finalizar-programa
