iniciar-programa
define-nueva-instruccion media-vuelta como inicio
 gira-izquierda;
 gira-izquierda;
fin;
define-nueva-instruccion gira-derecha como inicio
 gira-izquierda;
 gira-izquierda;
 gira-izquierda;
fin;
define-nueva-instruccion suma como inicio
  si junto-a-zumbador entonces inicio
   coge-zumbador;
   suma;
   deja-zumbador;
  fin
  sino inicio
   si orientado-al-norte entonces inicio
     avanza;
     media-vuelta;
     suma;
     deja-zumbador;
   fin
   sino
   si orientado-al-sur y frente-libre entonces inicio
    mientras frente-libre hacer inicio
     avanza;
    fin;
  fin;
 fin;
fin;
 define-nueva-instruccion base(n) como inicio
   si junto-a-zumbador entonces inicio
     coge-zumbador;
     base(sucede(n));
   fin;
   media-vuelta;
   repetir 2 veces inicio
     avanza;
   fin;
   gira-izquierda;
   repetir 11 veces inicio
    avanza;
   fin;
   gira-izquierda;
   repetir 12 veces inicio
     suma;
     coge-zumbador;
     repetir n veces inicio
       si junto-a-zumbador entonces inicio
         coge-zumbador;
       fin
       sino inicio
         repetir n veces inicio
           deja-zumbador;
         fin;
         coge-zumbador;
         gira-izquierda;
       fin;
     fin;
     si frente-bloqueado entonces inicio
       mientras no-orientado-al-oeste hacer inicio
        gira-izquierda;
       fin;
       avanza;
       gira-derecha;
       avanza;
       deja-zumbador;
     fin
     sino inicio
       mientras no-orientado-al-oeste hacer inicio
        gira-izquierda;
       fin;
       si frente-libre entonces inicio
         avanza;
       fin;
       gira-derecha;
       avanza;
     fin;
   fin;
   apagate;
 fin;
    inicia-ejecucion
     repetir 3 veces inicio
      avanza;
     fin;
     base(0);
        apagate;
    termina-ejecucion
finalizar-programa
