iniciar-programa
define-nueva-instruccion g(n) como
inicio
repetir n veces
inicio
gira-izquierda;
fin;
fin;
          define-nueva-instruccion kaka(n) como
          inicio
            si no-junto-a-zumbador entonces
            inicio
              si frente-libre entonces
              inicio
              avanza;
              kaka(n);
              fin
              sino
              inicio
                 g(2);
                 mientras frente-libre hacer
                 inicio
                 avanza;
                 fin;
                 g(2);

              fin;
            fin
            sino
            inicio
             gira-izquierda;
             repetir precede(n) veces
             inicio
             si frente-libre entonces
             avanza;
             fin;
            si junto-a-zumbador entonces
            inicio
             si frente-libre entonces
             inicio
             avanza;
             fin
             sino
             inicio
               si junto-a-zumbador entonces
               inicio
               coge-zumbador;
               fin;
             fin;
             g(2);
               si no-junto-a-zumbador entonces
               inicio
                 mientras frente-libre hacer
                 inicio
                 avanza;
                 si junto-a-zumbador entonces
                 inicio
                 coge-zumbador;
                 fin;
                 fin;
                gira-izquierda;
                 kaka(n);
               fin
               sino
               inicio
                mientras frente-libre hacer
                inicio
                avanza;
                fin;
                gira-izquierda;
                si frente-libre entonces
                inicio
                avanza;
                kaka(n);
                fin;
               fin;
            fin
            sino
            inicio
            g(2);
            mientras frente-libre hacer
            inicio
            avanza;
            fin;
            gira-izquierda;
            si frente-libre entonces
            inicio
            avanza;
            fin;
            kaka(n);
            fin;

            fin;

          fin;

            define-nueva-instruccion cuenta(n) como
            inicio
                si no-junto-a-zumbador y orientado-al-este entonces
                inicio
                      si frente-libre entonces
                      inicio
                  avanza;
                  cuenta(n);
                   fin
                   sino
                   inicio
                   apagate;
                   fin;
                fin
                sino
                inicio
                si orientado-al-este entonces
                inicio
                gira-izquierda;
                fin;
                si junto-a-zumbador entonces
                inicio
                coge-zumbador;

                cuenta(sucede(n));

                fin
                sino
                inicio
                si frente-libre entonces
                inicio
                avanza;
                si junto-a-zumbador entonces
                inicio
                cuenta(n);
                fin
                sino
                inicio
                g(2);
                mientras frente-libre hacer
                inicio
                avanza;
                fin;
                g(3);
                mientras frente-libre hacer
                inicio
                avanza;
                fin;
                deja-zumbador;
                g(2);
                si frente-libre entonces
                inicio
                avanza;
                fin;
                kaka(n);

                fin;
                fin
                sino
                inicio
                g(2);
                mientras frente-libre hacer
                inicio
                avanza;
                fin;
                g(3);
                mientras frente-libre hacer
                inicio
                avanza;
                fin;
                deja-zumbador;
                g(2);
                si frente-libre entonces
                inicio
                avanza;
                fin;
                kaka(n);
                fin;
                fin;
            fin;
         fin;
    inicia-ejecucion
    mientras orientado-al-este hacer
    inicio
     si frente-libre entonces
     inicio
     avanza;
     fin;
      cuenta(0);
      fin;
        apagate;
    termina-ejecucion
finalizar-programa
