iniciar-programa
define-nueva-instruccion g(n) como
inicio
      repetir n veces
      gira-izquierda;
fin;
define-nueva-instruccion suma como
inicio
    mientras junto-a-zumbador y frente-libre hacer
    inicio
          mientras junto-a-zumbador hacer
          coge-zumbador;
          avanza;
    fin;
     mientras junto-a-zumbador hacer
          coge-zumbador;
      g(2);
      mientras frente-libre hacer
      avanza;
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      g(1);
      avanza;
      g(1);

fin;
define-nueva-instruccion conteo(n) como
inicio
      si junto-a-zumbador entonces
      inicio
            coge-zumbador;
            conteo(sucede(n));
      fin
      sino
      inicio
            g(2);
            mientras frente-libre hacer
            avanza;
            g(3);
            avanza;
            g(3);
            repetir precede(n) veces
            inicio
                 si frente-libre entonces
                 avanza
                 sino
                 inicio
                       g(2);
                       mientras frente-libre hacer
                       avanza;
                       g(3);
                       avanza;
                       g(3);
                 fin;

            fin;
             deja-zumbador;
      fin;
fin;
define-nueva-instruccion cuenta como
inicio
     repetir 5 veces
     inicio
          repetir 100 veces
          inicio
               si junto-a-zumbador entonces
               coge-zumbador;
               avanza;

                si frente-bloqueado entonces
               inicio
               si junto-a-zumbador entonces
                coge-zumbador;
                 si orientado-al-este entonces
                 inicio
                       g(1);
                       avanza;
                       g(1);
                 fin
                 sino
                 inicio
                      g(3);
                      avanza;
                      g(3);
                 fin;

           fin;
           fin;

     fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-oeste hacer
    g(1);
    mientras frente-libre hacer
    avanza;
    g(1);
    mientras frente-libre hacer avanza;
    g(2);
    mientras junto-a-zumbador hacer
    suma;

    mientras no-orientado-al-oeste hacer
    g(1);
    mientras frente-libre hacer avanza;
    g(2);
   mientras junto-a-zumbador y frente-libre hacer
   inicio
       conteo(0);

       g(2);
       mientras frente-libre hacer
       avanza;
       g(1);
       mientras frente-libre hacer
       avanza;
       g(1);
       mientras no-junto-a-zumbador y frente-libre hacer
       avanza;
    fin;
    mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
    g(1);
    avanza;
    g(1);
    cuenta;
    mientras no-orientado-al-oeste hacer
    g(1);
    mientras frente-libre hacer
    avanza;
    g(1);
    mientras frente-libre hacer avanza;
    mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
