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

fin;
define-nueva-instruccion cuenta(n) como
inicio
      si junto-a-zumbador entonces
      inicio
          coge-zumbador;
          cuenta(sucede(n));
      fin
      sino
      inicio
      si no-orientado-al-norte entonces
      inicio
           mientras no-orientado-al-oeste hacer
           g(2);
           mientras frente-libre hacer
           avanza;
           g(1);
           mientras frente-libre hacer
           avanza;
           g(1);
           repetir precede(n) veces avanza;
           deja-zumbador;
           g(1);
      fin;

      fin;
fin;
define-nueva-instruccion busca como
inicio
     si junto-a-zumbador entonces
      cuenta(0)
      sino
      avanza;
     si frente-bloqueado entonces
      inicio
      si junto-a-zumbador entonces
      sal-de-instruccion;
             si orientado-al-este entonces
             inicio
                   g(1);
                   si frente-libre entonces
                   inicio
                   avanza;
                   g(1);
                   fin;
             fin
             sino
             si orientado-al-oeste entonces
             inicio
                   g(3);
                   si frente-libre entonces
                   inicio
                   avanza;
                   g(3);
                   fin;
             fin ;
          si orientado-al-norte entonces
          inicio
               mientras no-orientado-al-oeste hacer
               g(1);
                mientras frente-libre hacer
               avanza;
               g(1);
               mientras frente-libre hacer
               avanza;
               g(1);
               conteo(0);
          fin;

      fin;
fin;
inicia-ejecucion
mientras no-orientado-al-norte hacer
      g(1);
mientras frente-libre hacer
inicio
      mientras no-orientado-al-norte hacer
      g(1);
      avanza;
      g(3);
      mientras no-junto-a-zumbador hacer
      busca;
      cuenta(0);
      g(1);
      mientras frente-libre hacer avanza;
      g(3);
fin;
        apagate;
    termina-ejecucion
finalizar-programa
