iniciar-programa
define-nueva-instruccion g(n) como
inicio
repetir n veces
   inicio
   gira-izquierda;
   fin;
   fin;
         define-nueva-instruccion ene(n) como
         inicio
             si algun-zumbador-en-la-mochila entonces
             inicio
             deja-zumbador;
              si si-es-cero(n) entonces
              inicio
              g(3);
              mientras junto-a-zumbador hacer
              inicio
              coge-zumbador;
              fin;
              apagate;
              fin
              sino
              inicio
              ene(precede(n));
              fin;
              fin
              sino
              inicio
                si si-es-cero(n) entonces
                inicio
                g(2);
                mientras junto-a-zumbador hacer
                inicio
                coge-zumbador;
                fin;
                apagate;
                fin
                sino
                inicio
                gira-izquierda;
                mientras junto-a-zumbador hacer
                inicio
                coge-zumbador;
                fin;
                apagate;
                fin;
              fin;

         fin;
    define-nueva-instruccion kaka(n) como
    inicio
      si orientado-al-sur y derecha-bloqueada y frente-bloqueado entonces
      inicio
      ene(n);
      fin;
      si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         si frente-libre entonces
         inicio
         avanza;
         kaka(n);
         fin
         sino
         inicio
           si orientado-al-norte entonces
           inicio
            g(3);
            si frente-libre entonces
            inicio
            avanza;
            g(3);
            kaka(n);
            fin
            sino
            inicio
            g(2);
            mientras frente-libre hacer
            inicio
            avanza;
            fin;
            gira-izquierda;
            mientras frente-libre hacer
            inicio
            avanza;
            fin;

            ene(n);
            fin;

           fin
           sino
           inicio
             si orientado-al-sur entonces
             inicio
             gira-izquierda;
             si frente-libre entonces
             inicio
             avanza;
             gira-izquierda;
             kaka(n);
             fin
             sino
             inicio
             g(2);
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             gira-izquierda;
             ene(n);
             fin;
             fin;
           fin;
         fin;

       fin

       sino
       inicio


         si frente-libre entonces
         inicio
         avanza;
         kaka(sucede(n))
         fin
         sino
         inicio
           si orientado-al-norte entonces
           inicio
            g(3);
            si frente-libre entonces
            inicio
            avanza;
            g(3);
            kaka(sucede(n));
            fin
            sino
            inicio
            g(2);
            mientras frente-libre hacer
            inicio
            avanza;
            fin;
            gira-izquierda;
            mientras frente-libre hacer
            inicio
            avanza;
            fin;
            kaka(sucede(n));
            ene(n);
            fin;

           fin
           sino
           inicio
             si orientado-al-sur entonces
             inicio
             gira-izquierda;
             si frente-libre entonces
             inicio
             avanza;
             gira-izquierda;
             kaka(sucede(n));
             fin
             sino
             inicio
             g(2);
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             gira-izquierda;
             kaka(sucede(n));
              ene(n);
             fin;
             fin;
           fin;
         fin;

       fin;
    fin;

    inicia-ejecucion
         kaka(0);

        apagate;
    termina-ejecucion
finalizar-programa
