iniciar-programa
 define-nueva-instruccion g(n) como
 inicio
 repetir n veces
 inicio
 gira-izquierda;
 fin;
 fin;

 define-nueva-instruccion par(n) como
 inicio
   si junto-a-zumbador entonces
   inicio
   coge-zumbador;
    par(precede(n));
        deja-zumbador;
   fin
   sino
   inicio
    si si-es-cero(n) entonces
    inicio
    gira-izquierda;
    fin;
   fin;

 fin;

     define-nueva-instruccion busca(n) como
     inicio
       si junto-a-zumbador entonces
       inicio
         par(n);
          si orientado-al-este entonces
          inicio
           si frente-libre entonces
           inicio
           avanza;
           busca(n);
           fin
           sino
           inicio
             si izquierda-libre entonces
             inicio
             gira-izquierda;
             avanza;
             gira-izquierda;
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             g(2);
             busca(n);
             fin
             sino
             inicio
             g(2);
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             gira-izquierda;
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             g(2);
             deja-zumbador;
             si frente-libre entonces
             inicio
             avanza;
             fin;
             g(3);

             fin;
           fin;
          fin
          sino
          inicio
          g(3);
          mientras junto-a-zumbador hacer
          inicio
          coge-zumbador;
          fin;
          g(2);
          mientras frente-libre hacer
          inicio
          avanza;
          fin;
          gira-izquierda;
          mientras frente-libre hacer
          inicio
          avanza;
          fin;
          g(2);
          si frente-libre entonces
          inicio
          avanza;
          fin;
          g(3);
          fin;
       fin
       sino
       inicio
        si frente-libre entonces
        inicio
        avanza;
        busca(n);
        fin
        sino
        inicio
          si izquierda-libre entonces
          inicio
          gira-izquierda;
          avanza;
          gira-izquierda;
          mientras frente-libre hacer
          inicio
          avanza;
          fin;
          g(2);
          busca(n);

          fin
          sino
          inicio
              g(2);
              mientras frente-libre hacer
              inicio
              avanza;
              fin;
              gira-izquierda;
              mientras frente-libre hacer
              inicio
              avanza;
              fin;
              deja-zumbador;
              g(2);
              si frente-libre entonces
              inicio
              avanza;
              fin;
              g(3);

          fin;
        fin;

       fin;

     fin;

        define-nueva-instruccion cuenta(n) como
        inicio
          si junto-a-zumbador entonces
          inicio
          coge-zumbador;
          cuenta(sucede(n));
          fin
          sino
          inicio
            si si-es-cero(n) entonces
            inicio
             si frente-libre entonces
             inicio
             avanza;
             cuenta(n);
             fin
             sino
             inicio
             si izquierda-libre entonces
             inicio
             gira-izquierda;
             avanza;
             gira-izquierda;
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             g(2);
             cuenta(n);
             fin
             sino
             inicio
             apagate;
             fin;

             fin;
            fin
            sino
            inicio
            si frente-bloqueado y izquierda-bloqueada entonces
            inicio
              g(2);
              mientras frente-libre hacer
              inicio
              avanza;
              fin;
              gira-izquierda;
              mientras frente-libre hacer
              inicio
              avanza;
              fin;
              deja-zumbador;
              apagate;
            fin;
             busca(n);
            fin;
          fin;
        fin;

    inicia-ejecucion
    si orientado-al-este entonces
    inicio
    gira-izquierda;
    fin;
    si orientado-al-sur entonces
    inicio
    g(2);
    fin;
    si orientado-al-oeste entonces
    inicio
    g(3);
    fin;

    si frente-libre entonces
    inicio
    avanza;
    fin;
    g(3);
    mientras orientado-al-este hacer
    inicio
      cuenta(0);
      fin;
        apagate;
    termina-ejecucion
finalizar-programa
