iniciar-programa



define-nueva-instruccion salto como inicio
deja-zumbador;
mientras frente-libre hacer avanza;
            gira-izquierda;
            si frente-libre entonces avanza;
            gira-izquierda;
            mientras junto-a-zumbador hacer avanza;
            repetir 2 veces gira-izquierda;
            avanza;
fin;

define-nueva-instruccion sumar(b) como inicio
    si junto-a-zumbador entonces inicio
         coge-zumbador;
         sumar(sucede(b));
    fin sino inicio
        si izquierda-libre entonces inicio
             salto;
             sumar(b);
        fin sino inicio
        deja-zumbador;
            mientras frente-libre hacer avanza;
            repetir 3 veces gira-izquierda;
            mientras junto-a-zumbador hacer avanza;
            repetir b veces deja-zumbador;
            apagate;
        fin;                        
    fin;

fin;


define-nueva-instruccion contar(x) como inicio
    si no si-es-cero (x) entonces inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            contar(precede(x));
        fin sino inicio
            si izquierda-libre entonces inicio
                salto;
                contar(x);
            fin sino inicio
            deja-zumbador;
                repetir 2 veces gira-izquierda;
                avanza;
                repetir 3 veces gira-izquierda;
                avanza;
                repetir x veces deja-zumbador;
                apagate;
            fin;
        fin;

     fin sino inicio
        sumar(0);
    fin;
fin;


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

    inicia-ejecucion

    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;

    cantidad(0);

        apagate;
    termina-ejecucion
finalizar-programa
