iniciar-programa
define-nueva-instruccion mira-sur como
inicio
   mientras no-orientado-al-sur hacer
     gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
   mientras no-orientado-al-norte hacer
     gira-izquierda;
fin;
define-nueva-instruccion mira-este como
inicio
  mientras no-orientado-al-este hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-oeste como
inicio
  mientras no-orientado-al-oeste hacer
    gira-izquierda;
fin;
define-nueva-instruccion gira-derecha como
inicio
  repetir 3 veces
    gira-izquierda;
fin;
define-nueva-instruccion paso-atras como
inicio
   repetir 2 veces
     gira-izquierda;
   avanza;
   repetir 2 veces
     gira-izquierda;
fin;
define-nueva-instruccion lleva como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    lleva;
    deja-zumbador;
  fin
  sino
  inicio
    mira-sur;
    repetir 2 veces
      avanza;
    mira-norte;
  fin;
fin;
define-nueva-instruccion mayor(m) como
inicio
   repetir m veces
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         repetir 2 veces
           avanza;
         deja-zumbador;
         mira-sur;
         mientras frente-libre hacer
           avanza;
         mira-norte;
      fin;
   fin;

fin;
define-nueva-instruccion horizontal(k) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    horizontal(k);
    avanza;
  fin
  sino
  inicio
    gira-derecha;
    avanza;
    si no-junto-a-zumbador entonces
    inicio
      repetir k veces
        deja-zumbador;
    fin
    sino
    inicio
       repetir k veces
       inicio
         si junto-a-zumbador entonces
         inicio
           coge-zumbador;
         fin;
       fin;
       repetir k veces
         deja-zumbador;
    fin;
    paso-atras;
    gira-derecha;
  fin;
fin;
define-nueva-instruccion compara(k) como
inicio
   si junto-a-zumbador entonces
   inicio
     coge-zumbador;
     compara(sucede(k));
   fin
   sino
   inicio
     mira-sur;
     mientras frente-libre hacer
       avanza;
     mira-oeste;
     horizontal(k);
     gira-izquierda;
     avanza;
     repetir k veces
       deja-zumbador; 
     paso-atras;
     gira-derecha;
   fin;
fin;
define-nueva-instruccion numero(m) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    numero(sucede(m));
  fin
  sino
  inicio
    avanza;
    si junto-a-zumbador entonces
    inicio
    mientras junto-a-zumbador hacer
    inicio
       mira-norte;
       mayor(m);
       si junto-a-zumbador entonces
       inicio
         repetir m veces
           deja-zumbador;
         repetir 2 veces
           avanza;
         mientras junto-a-zumbador hacer
           coge-zumbador;
         paso-atras;
         compara(0);
         mira-este;
         avanza;
       fin
       sino
       inicio
            si no-junto-a-zumbador entonces
            inicio
            repetir 2 veces
             avanza;
           lleva;
           fin;
           mira-este;
           avanza;
       fin;
    fin;
    mira-oeste;
    avanza;
    fin
    sino
      paso-atras;

    mira-oeste;
    mientras junto-a-zumbador hacer
      avanza;
    repetir m veces
      deja-zumbador;
    mira-norte;
    avanza;
    deja-zumbador;
    paso-atras;
    mira-este;
  fin;
fin;
define-nueva-instruccion resultado(n) como
inicio
    si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      resultado(sucede(n));
    fin
    sino
    inicio
       si frente-libre entonces
         avanza;
       repetir n veces
       inicio
         si junto-a-zumbador entonces
           coge-zumbador;
       fin;
       repetir n veces
         deja-zumbador;
    fin;
fin;

define-nueva-instruccion vecess(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      avanza;
      vecess(sucede(n));
   fin
   sino
   inicio
     repetir n veces
     inicio
       paso-atras;
       numero(0);

     fin;
     mira-sur;
    mientras junto-a-zumbador hacer
    coge-zumbador;
    mira-norte;
    avanza;
    gira-derecha;
    repetir n veces
      resultado(0);
   fin;
fin;

define-nueva-instruccion final como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    final;
    deja-zumbador;
  fin
  sino
  inicio
    mira-sur;
    mientras frente-libre hacer
      avanza;
    mira-oeste;
    mientras frente-libre hacer
      avanza;
  fin;
fin;
    inicia-ejecucion
    mira-este;
    vecess(0);
    mira-sur;

    final;
        apagate;
    termina-ejecucion
finalizar-programa
