iniciar-programa
define-nueva-instruccion gira(k) como
repetir k veces gira-izquierda;
define-nueva-instruccion face(n) como inicio
   si junto-a-zumbador entonces inicio
       coge-zumbador;
       face(sucede(n));
   fin sino inicio
   repetir n veces deja-zumbador;
   repetir 3 veces inicio
    mientras frente-bloqueado hacer gira-izquierda;
    si frente-libre y junto-a-zumbador entonces inicio
        avanza;
        repetir n veces
        si junto-a-zumbador entonces coge-zumbador;
        si junto-a-zumbador entonces inicio
            gira(2);
             repetir n veces deja-zumbador;
            avanza;
            gira(3);
        fin;
    fin;
    fin;
     si junto-a-zumbador entonces apagate;
    si no junto-a-zumbador entonces
     mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
fin;
fin;
define-nueva-instruccion fac(n) como inicio
   si junto-a-zumbador entonces inicio
       coge-zumbador;
       fac(sucede(n));
   fin sino inicio
   repetir n veces deja-zumbador;
   repetir 4 veces inicio
    mientras frente-bloqueado hacer gira-izquierda;
    si frente-libre y junto-a-zumbador entonces inicio
        avanza;
        si junto-a-zumbador entonces inicio
        repetir n veces
        si junto-a-zumbador entonces coge-zumbador;
        si junto-a-zumbador entonces inicio
            gira(2);
             repetir n veces deja-zumbador;
            avanza;
            gira(3);
        fin;
        fin sino inicio
            gira(2);
            avanza;
            gira(3);
        fin;
    fin;
    fin;
     si junto-a-zumbador entonces apagate;
    si no junto-a-zumbador entonces
     mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
fin;
fin;
    inicia-ejecucion
    fac(0);
    mientras junto-a-zumbador hacer inicio
        gira(3);
        face(0);
    fin;

        apagate;
    termina-ejecucion
finalizar-programa
 