iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
    repetir 3 veces
       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 mira-sur como
inicio
    mientras no-orientado-al-sur 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 ubicate como
inicio
   mira-sur;
   mientras frente-libre hacer
     avanza;
   mira-oeste;
   mientras frente-libre hacer
      avanza;
   mira-norte;
fin;
define-nueva-instruccion copia(m) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        copia(sucede(m));
        deja-zumbador;
    fin
    sino
    inicio
       avanza;
       mientras junto-a-zumbador hacer
          coge-zumbador;
       repetir m veces
         deja-zumbador;
       paso-atras;
    fin;
fin;

define-nueva-instruccion compara(n) como
inicio
   si no(si-es-cero(n)) y junto-a-zumbador entonces
   inicio
       coge-zumbador;
       compara(precede(n));
       deja-zumbador;
   fin
   sino
   inicio
      si si-es-cero(n) y junto-a-zumbador  entonces
      inicio
          mientras junto-a-zumbador hacer
                coge-zumbador;
            mira-este;
      fin;
   fin;
fin;
define-nueva-instruccion vertical como
inicio
   si frente-libre entonces
   inicio
       avanza;
       vertical;
       deja-zumbador;
   fin
   sino
   inicio
      paso-atras;
      gira-izquierda;
      repetir 2 veces
        avanzA;
   fin;
fin;
define-nueva-instruccion horizontal como
inicio
   si frente-libre entonces
   inicio
      avanza;
      horizontal;
      deja-zumbador;
   fin
   sino
   inicio
       mira-sur;
       vertical;
       paso-atras;
   fin;
fin;
define-nueva-instruccion regresav como
inicio
    si junto-a-zumbador entonces
    inicio
       coge-zumbador;
       regresav;
       avanza;
    fin
    sino
    inicio
       ubicate;
    fin;
fin;
define-nueva-instruccion regresah como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        regresah;
        avanza;
    fin
    sino
    inicio
       avanza;
       regresav;
       mira-este;
    fin;
fin;
define-nueva-instruccion busca(n) como
inicio
    si orientado-al-este entonces
    inicio
        avanza;
        gira-izquierda;
        avanza;
        gira-derecha;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
               deja-zumbador;
               mira-norte;
               busca(sucede(n));
               mira-este;
            fin
            sino
            inicio
                deja-zumbador;
                busca(n);
            fin;
        fin;
        mira-este;
        gira-izquierda;
        paso-atras;
        gira-derecha;
        paso-atraS;
    fin;
    si orientado-al-oeste entonces
    inicio
        avanza;
        gira-derecha;
        avanza;
        gira-izquierda;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
                deja-zumbador;
                mira-norte;
                busca(sucede(n));
                mira-oeste;
            fin
            sino
            inicio
                deja-zumbador;
                busca(n);
            fin;
        fin;
        mira-oeste;
        gira-derecha;
        paso-atras;
        gira-izquierda;
        paso-atras;
    fin;
    si orientado-al-norte entonces
    inicio
        avanza;
        gira-izquierda;
        avanza;
        mira-este;
        si junto-a-zumbador entonces
        inicio
            repetir 2 veces
               avanza;
            si junto-a-zumbador entonces
            inicio
               paso-atras;
               mira-norte;
               paso-atras;
               mira-este;
               busca(sucede(n));
               mira-oeste;
               busca(sucede(n));
               mira-norte;
            fin
            sino
            inicio
                paso-atras;
                mira-norte;
                paso-atras;
                mira-oeste;
                horizontal;
                paso-atras;
           gira-derecha;
           avanza;
           si no-junto-a-zumbador entonces
           inicio
               repetir n veces
                  deja-zumbador;
               (*copia las coordenadas de arriba*)
               paso-atras;
               gira-izquierda;
               avanza;
               gira-derecha;
               copia(0);
               gira-izquierdA;
               avanza;
               gira-derecha;
               copia(0);
           fin
           sino
           inicio
               compara(n);
               si no-orientado-al-sur entonces
               inicio
                  mira-sur;
                  paso-atras;
                  mira-este;
                  avanza;
                  gira-derecha;
                  copia(0);
                  gira-izquierda;
                  avanza;
                  gira-derecha;
                  copia(0);
               fin;
           fin;
           ubicate;
           avanza;
           gira-derecha;
           avanza;
           regresah;
           mira-nortE;
                mira-norte;
            fin;
        fin
        sino
        inicio
           avanza;
           avanza;
           si no-junto-a-zumbador entonces
           inicio
           paso-atras;
           gira-izquierda;
           paso-atras;
           mira-oeste;
           horizontal;
           paso-atras;
           gira-derecha;
           avanza;
           si no-junto-a-zumbador entonces
           inicio
               repetir n veces
                  deja-zumbador;
               (*copia las coordenadas de arriba*)
               paso-atras;
               gira-izquierda;
               avanza;
               gira-derecha;
               copia(0);
               gira-izquierdA;
               avanza;
               gira-derecha;
               copia(0);
           fin
           sino
           inicio
               compara(n);
               si no-orientado-al-sur entonces
               inicio
                  mira-sur;
                  paso-atras;
                  mira-este;
                  avanza;
                  gira-derecha;
                  copia(0);
                  gira-izquierda;
                  avanza;
                  gira-derecha;
                  copia(0);
               fin;
           fin;
           ubicate;
           avanza;
           gira-derecha;
           avanza;
           regresah;
           mira-nortE;
           fin
           sino
           inicio
               paso-atras;
               gira-izquierda;
               paso-atras;
               mira-norte;
           fin;
           mira-norte;
        fin;
        mira-norte;
    fin;
fin;
    inicia-ejecucion
        mira-norte;
        busca(0);
        ubicate;
        gira-derecha;
        avanza;
        regresah;
        apagate;
    termina-ejecucion
finalizar-programa
