iniciar-programa
  define-nueva-instruccion g(n) como
  inicio
  repetir n veces
  gira-izquierda;
  fin;
     define-nueva-instruccion pregunta(n) como
     inicio
        si junto-a-zumbador y orientado-al-este entonces
        inicio
          si  no si-es-cero(n) entonces
           inicio
           coge-zumbador;
           pregunta(precede(n));
             deja-zumbador;
           fin;

           fin
            sino
           inicio
           si orientado-al-este entonces
             gira-izquierda;
        fin;

     fin;

       define-nueva-instruccion busca(n) como
       inicio

            repetir 4 veces
            inicio
              gira-izquierda;
                si frente-libre entonces
                inicio
                avanza;
                    si junto-a-zumbador entonces
                    inicio
                    coge-zumbador;
                     si junto-a-zumbador entonces
                     inicio
                      coge-zumbador;
                      si junto-a-zumbador entonces
                      inicio
                      repetir 2 veces
                      deja-zumbador;
                         repetir 4 veces
                            inicio
                            gira-izquierda;
                             si orientado-al-este entonces
                             inicio
                               si frente-libre entonces
                               avanza;
                                 pregunta(n);
                                  si orientado-al-norte entonces
                                  inicio
                                  mientras junto-a-zumbador hacer
                                  coge-zumbador;
                                  si no si-es-cero(n) entonces
                                   repetir n veces
                                   inicio
                                   deja-zumbador;
                                  fin;
                                  g(3);
                                fin;

                                g(2);
                                si frente-libre entonces
                                avanza;
                                g(2);
                            fin;
                            fin;

                            g(2);
                            si frente-libre entonces
                            avanza;
                            g(2);
                      fin
                      sino
                      inicio
                      si no si-es-cero(n) entonces
                      inicio
                        busca(precede(n));
                        repetir 2 veces
                        deja-zumbador;
                        g(2);
                        si frente-libre entonces
                        avanza;
                        g(2);
                        fin
                        sino
                        inicio
                        repetir 2 veces
                        deja-zumbador;
                        g(2);
                        si frente-libre entonces
                        avanza;
                        g(2);
                        fin;
                      fin;
                     fin
                     sino
                     inicio
                       busca(n);
              deja-zumbador;
                       g(2);
                        si frente-libre entonces
                        avanza;
                        g(2);

                     fin;
                    fin
                    sino
                inicio
                g(2);
                si frente-libre entonces
                avanza;
                g(2);
                fin;
                fin;


         fin;
       fin;

      define-nueva-instruccion kaka(n) como
      inicio
       si junto-a-zumbador entonces
       inicio
        coge-zumbador;
        kaka(sucede(n));

       fin
       sino
       inicio
        busca(precede(n));
       fin;
      fin;
         inicia-ejecucion
       kaka(0);
        apagate;
    termina-ejecucion
finalizar-programa
