iniciar-programa
define-nueva-instruccion gira(n) como
inicio
   repetir n veces
      gira-izquierda;
fin;
define-nueva-instruccion lleva1 como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      lleva1;
      deja-zumbador;
   fin
   sino
   inicio
      gira-izquierda;
      avanza;
      gira-izquierda;
      mientras junto-a-zumbador hacer
         avanza;
      deja-zumbador;
   fin;
fin;
define-nueva-instruccion lleva2 como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      lleva2;
      deja-zumbador;
   fin
   sino
   inicio
      avanza;
      mientras junto-a-zumbador hacer
         coge-zumbador;
   fin;
fin;
define-nueva-instruccion lleva(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      lleva(sucede(n));
      deja-zumbador;
   fin
   sino
   inicio
      repetir n veces
         deja-zumbador;
      avanza;
   fin;
fin;
define-nueva-instruccion compara3(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      si no si-es-cero(n) entonces
      compara3(precede(n));
      deja-zumbador;
   fin
   sino
   inicio
      repetir n veces
        deja-zumbador;
   fin;
fin;
define-nueva-instruccion compara1(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      compara1(sucede(n));
   fin
   sino
   inicio
      avanza;
      compara3(n);
      mientras no-orientado-al-oeste hacer
         gira-izquierda;
   fin;
fin;
define-nueva-instruccion compara(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      si no si-es-cero(n) entonces
      inicio
         compara(precede(n));
      fin;
      deja-zumbador;
   fin
   sino
   inicio
      gira(3);
      avanza;
      lleva(0);
      gira(2);
      avanza;
      avanza;
      gira(3);
   fin;
fin;
define-nueva-instruccion cuenta(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      cuenta(sucede(n));
   fin
   sino
   inicio
      repetir n veces
         deja-zumbador;
      mientras frente-libre hacer
      inicio
         avanza;
         compara(precede(n));
      fin;
   fin;

fin;
    inicia-ejecucion
       mientras no-orientado-al-norte hacer
       gira-izquierda;
       avanza;
       deja-zumbador;
       gira(2);
       avanza;
       gira-izquierda;
       avanza;
       mientras junto-a-zumbador y frente-libre hacer
       inicio
          gira(2);
          cuenta(0);
gira(3);
avanza;
gira(3);
mientras junto-a-zumbador hacer
   avanza;          
gira-izquierda;
avanza;
gira-izquierda;
mientras frente-libre hacer
inicio
  compara1(0);
fin;
lleva1;
gira(3);
avanza;
gira-izquierda;
avanza;
       fin;
gira-izquierda;
avanza;
gira-izquierda;
mientras frente-libre hacer
compara1(0);
gira-izquierda;
lleva2;
        apagate;
    termina-ejecucion
finalizar-programa
