iniciar-programa
define-nueva-instruccion mira-norte como
inicio
  mientras no-orientado-al-norte hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
  mientras no-orientado-al-sur hacer
    gira-izquierda;
fin;
define-nueva-instruccion gira-derecha como
inicio
  repetir 3 veces
    gira-izquierda;
fin;
define-nueva-instruccion mira-este como
inicio
  mientras no-orientado-al-este hacer
    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 rellena(n) como
inicio
  repetir n veces
  inicio
    mientras  frente-libre hacer
    inicio
      deja-zumbador;
        avanza;
    fin;
    si frente-bloqueado y no junto-a-zumbador entonces
    inicio
      deja-zumbador;
    fin;
    si  derecha-libre entonces
    inicio
      repetir 2 veces
        gira-izquierda;
      mientras frente-libre hacer
        avanza;
      mira-sur;
      avanza;
      mira-este;
    fin
    sino
    inicio
      repetir 2 veces
        gira-izquierda;
      mientras frente-libre hacer
        avanza;
      mira-norte;
    fin;
  fin;
fin;
define-nueva-instruccion traslada como
inicio
  si junto-a-zumbador y orientado-al-este entonces
  inicio
    coge-zumbador;
    si frente-libre entonces
      avanza
    sino
    inicio
      si derecha-libre entonces
      inicio
        repetir 2 veces
          gira-izquierda;
        mientras frente-libre hacer
          avanza;
        mira-sur;
        avanza;
        mira-este;
      fin
      sino
      inicio
        repetir 2 veces
          gira-izquierda;
        mientras frente-libre hacer
          avanza;
      fin;
    fin;
    traslada;
    deja-zumbador;
  fin
  sino
  inicio
    si no-orientado-al-este entonces
    inicio
      mira-sur;
      mientras frente-libre hacer
        avanza;
     mientras junto-a-zumbador hacer
       paso-atras;
    fin;
  fin;
fin;
define-nueva-instruccion compara(m) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    compara(sucede(m));
  fin
  sino
  inicio
    avanza;
    repetir m veces
    inicio
      si junto-a-zumbador entonces
      inicio
        coge-zumbador;
      fin;
    fin;
    si junto-a-zumbador entonces
    inicio
      repetir m veces
        deja-zumbador;
    fin
    sino
    inicio
      repetir m veces
        deja-zumbador;
    fin;
  fin;
fin;
    inicia-ejecucion
      mira-este;
      mientras no-junto-a-zumbador hacer
        avanza;
      si junto-a-zumbador entonces
        repetir 350 veces
          coge-zumbador;
       repetir 2 veces
         gira-izquierda;
       mientras frente-libre hacer
         avanza;
       mira-norte;
       repetir 2 veces
         avanza;
       gira-derecha;
       mientras frente-libre hacer
         avanza;
       gira-izquierda;
       avanza;
       gira-izquierda;
       mientras frente-libre hacer
         avanza;
       mira-este;
       rellena(2);
       repetir 3 veces
         avanza;
       gira-derecha;
       mientras frente-libre hacer
         avanza;
       mira-norte;
       mientras frente-libre hacer
         avanza;
       gira-izquierda;
       mientras frente-libre hacer
         avanza;
       mira-este;
       rellena(3);
       mira-este;
       mientras frente-libre hacer
         avanza;
       gira-izquierda;
       mientras frente-libre hacer
         avanza;
       gira-izquierda;
       mientras frente-libre hacer
        avanza;
       mira-este;
       traslada;
       mira-norte;
       avanza;
       avanza;
       gira-derecha;
       mientras frente-libre hacer
         avanza;
       gira-izquierdA;
       mientras frente-libre hacer
         avanza;
       gira-izquierda;
       mientras frente-libre hacer
        avanza;
       mira-este;
       traslada;
       compara(0);
               apagate;
    termina-ejecucion
finalizar-programa
 