iniciar-programa

define-nueva-instruccion entra como inicio
avanza;
gira-izquierda;
repetir 3 veces avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin;

define-nueva-instruccion opera2(z) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        opera2(z);
        repetir z veces deja-zumbador;
    fin sino inicio
        gira-izquierda;
        avanza;
        repetir 3 veces gira-izquierda;
        avanza;
        repetir 3 veces gira-izquierda;
        avanza;
    fin;

fin;

define-nueva-instruccion opera(x) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        opera(sucede(x));
    fin sino inicio
    si frente-libre entonces inicio
    avanza;
    opera2(x);
    fin;
    fin;
fin;

define-nueva-instruccion multiplica como inicio
    entra;
    opera(0);
fin;



define-nueva-instruccion sustrae(a) como inicio
   mientras junto-a-zumbador hacer inicio
    repetir a veces inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
        fin sino inicio
            mientras junto-a-zumbador hacer coge-zumbador;
            repetir 2 veces gira-izquierda;
            avanza;
            mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
            apagate;
        fin;
    fin;
   repetir 3 veces gira-izquierda;
   avanza;
   repetir precede(a) veces deja-zumbador;
   gira-izquierda;
   avanza;
   gira-izquierda;
   avanza;
   deja-zumbador;
   avanza;
   gira-izquierda;
   avanza;
   avanza;
   gira-izquierda;
   avanza;
   gira-izquierda;
   avanza;

   fin;
fin;




define-nueva-instruccion divide(x) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        divide(sucede(x));
    fin sino inicio
    repetir x veces deja-zumbador;
        repetir 2 veces gira-izquierda;
        avanza;
        gira-izquierda;
        avanza;
        gira-izquierda;
        avanza;
        mientras junto-a-zumbador hacer inicio
        sustrae(x);
        fin;
    fin;


fin;

    inicia-ejecucion

multiplica;
gira-izquierda;
avanza;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
repetir 3 veces gira-izquierda;
repetir 2 veces avanza;
gira-izquierda;
avanza;
divide(0);

    apagate;
    termina-ejecucion
finalizar-programa
