iniciar-programa
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 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 mira-oeste como
inicio
   mientras no-orientado-al-oeste 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-oeste;
   mientras frente-libre hacer
     avanza;
   mira-sur;
   mientras frente-libre hacer
      avanza;
   mira-norte;
fin;
define-nueva-instruccion principio como
inicio
    ubicate;
    mientras derecha-libre hacer
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
             coge-zumbador;
             si junto-a-zumbador entonces
             inicio
                coge-zumbador;
                si junto-a-zumbador entonces
                inicio
                   coge-zumbador;
                   sal-de-instruccion;
                fin
                sino
                inicio
                    repetir 3 veces
                        deja-zumbador;
                fin;
             fin
             sino
             inicio
                 repetir 2 veces
                    deja-zumbador;
             fin;
          fin
          sino
             deja-zumbador;
       fin;
       si frente-libre entonces
          avanza
       sino
       inicio
          gira-derecha;
          avanza;
          gira-derecha;
          mientras frente-libre hacer
             avanzA;
          mira-norte;
       fin;
    fin;
    mientras frente-libre hacer
    inicio
        si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
             coge-zumbador;
             si junto-a-zumbador entonces
             inicio
                coge-zumbador;
                si junto-a-zumbador entonces
                inicio
                   coge-zumbador;
                   sal-de-instruccion;
                fin
                sino
                inicio
                    repetir 3 veces
                       deja-zumbador;
                fin;
             fin
             sino
             inicio
                 repetir 2 veces
                    deja-zumbador;
             fin;
          fin
          sino
             deja-zumbador;
       fin;
       avanza;
    fin;
    si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
             coge-zumbador;
             si junto-a-zumbador entonces
             inicio
                coge-zumbador;
                si junto-a-zumbador entonces
                inicio
                   coge-zumbador;
                   sal-de-instruccion;
                fin
                sino
                inicio
                    repetir 3 veces
                       deja-zumbador;
                fin;
             fin
             sino
             inicio
                 repetir 2 veces
                    deja-zumbador;
             fin;
          fin
          sino
             deja-zumbador;
       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;
       fin;
   fin;
fin;
define-nueva-instruccion dos como
inicio
   ubicate;
   mientras derecha-libre hacer
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si junto-a-zumbador entonces
         inicio
            coge-zumbador;
            si no-junto-a-zumbador entonces
            inicio
               repetir 2 veces
                 deja-zumbador;
               sal-de-instruccion;
            fin
            sino
            inicio
               repetir 2 veces
                 deja-zumbador;
            fin;
         fin
         sino
           deja-zumbador;
      fin;
      si frente-libre entonces
        avanza
      sino
      inicio
         gira-derecha;
         avanza;
         gira-derecha;
         mientras frente-libre hacer
           avanza;
         mira-norte;
      fin;
   fin;
   mientras frente-libre hacer
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si junto-a-zumbador entonces
         inicio
            coge-zumbador;
            si no-junto-a-zumbador entonces
            inicio
               repetir 2 veces
                 deja-zumbador;
               sal-de-instruccion;
            fin
            sino
            inicio
               repetir 2 veces
                 deja-zumbador;
            fin;
         fin
         sino
           deja-zumbador;
      fin;
      avanza;
   fin;
   si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         si junto-a-zumbador entonces
         inicio
            coge-zumbador;
            si no-junto-a-zumbador entonces
            inicio
               repetir 2 veces
                 deja-zumbador;
               sal-de-instruccion;
            fin
            sino
            inicio
               repetir 2 veces
                 deja-zumbador;
            fin;
         fin
         sino
           deja-zumbador;
      fin;
fin;
define-nueva-instruccion checa(n) como
inicio
          si orientado-al-norte entonces
          inicio
                       principio;
                       si junto-a-zumbador entonces
                           compara(n)
                       sino
                       repetir n veces
                           deja-zumbador;
                       repetir 4 veces
                         deja-zumbador;
                       dos;
                       mira-norte;
                   fin;
                  si orientado-al-este entonces
                  inicio
                      principio;
                       si junto-a-zumbador entonces
                           compara(n)
                       sino
                       repetir n veces
                           deja-zumbador;
                       repetir 4 veces
                         deja-zumbador;
                       dos;
                       mira-este;
                  fin;
                  si orientado-al-oeste entonces
                  inicio
                      principio;
                       si junto-a-zumbador entonces
                           compara(n)
                       sino
                       repetir n veces
                           deja-zumbador;
                       repetir 4 veces
                         deja-zumbador;
                       dos;
                       mira-oeste;
                  fin;
                  si orientado-al-sur entonces
                  inicio
                       principio;
                       si junto-a-zumbador entonces
                           compara(n)
                       sino
                       repetir n veces
                           deja-zumbador;
                       repetir 4 veces
                         deja-zumbador;
                       dos;
                       mira-sur;
                  fin;
fin;
define-nueva-instruccion busca(n) como
inicio
    si frente-libre entonces
    inicio
        avanza;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
               coge-zumbador;
               si junto-a-zumbador entonces
               inicio
                  repetir 2 veces
                    deja-zumbador;
               fin
               sino
               inicio
                   repetir 2 veces
                      deja-zumbador;
                   checa(n);
               fin;
            fin
            sino
              deja-zumbador;
        fin
        sino
        inicio
           repetir 3 veces
             deja-zumbador;
           busca(n);
           repetir 3 veces
             coge-zumbador;
        fin;
        paso-atras;
    fin;
    si derecha-libre entonces
    inicio
        gira-derecha;
        avanza;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
               coge-zumbador;
               si junto-a-zumbador entonces
               inicio
                  repetir 2 veces
                    deja-zumbador;
               fin
               sino
               inicio
                   repetir 2 veces
                      deja-zumbador;
                   checa(sucede(n));
               fin;
            fin
            sino
              deja-zumbador;
        fin
        sino
        inicio
           paso-atras;
           repetir 3 veces
             coge-zumbador;
           si no-junto-a-zumbador entonces
           inicio
               repetir 3 veces
                 deja-zumbador;
               avanza;
               repetir 3 veces
                 deja-zumbador;
               busca(sucede(n));
               repetir 3 veces
                 coge-zumbador;
           fin
           sino
           inicio
               repetir 3 veces
                  deja-zumbador;
               avanza;
               repetir 3 veces
                 deja-zumbador;
               busca(n);
               repetir 3 veces
                 coge-zumbador;
           fin;
        fin;
        paso-atras;
        gira-izquierda;
    fin;
    si izquierda-libre entonces
    inicio
       gira-izquierda;
       avanza;
       si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
               coge-zumbador;
               si junto-a-zumbador entonces
               inicio
                  repetir 2 veces
                    deja-zumbador;
               fin
               sino
               inicio
                   repetir 2 veces
                      deja-zumbador;
                   checa(sucede(n));
               fin;
            fin
            sino
              deja-zumbador;
        fin
        sino
        inicio
           paso-atras;
           repetir 3 veces
             coge-zumbador;
           si no-junto-a-zumbador entonces
           inicio
             repetir 3 veces
               deja-zumbador;
              avanza;
              repetir 3 veces
                deja-zumbador;
              busca(sucede(n));
              repetir 3 veces
                 coge-zumbador;
           fin
           sino
           inicio
              repetir 3 veces
                 deja-zumbador;
              avanza;
              repetir 3 veces
                deja-zumbador;
              busca(n);
              repetir 3 veces
                coge-zumbador;
           fin;
        fin;
        paso-atras;
        gira-derecha;
    fin;
    repetir 2 veces
       gira-izquierda;
    si frente-libre entonces
    inicio
        avanza;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            si junto-a-zumbador entonces
            inicio
               coge-zumbador;
               si junto-a-zumbador entonces
               inicio
                  repetir 2 veces
                    deja-zumbador;
               fin
               sino
               inicio
                   repetir 2 veces
                      deja-zumbador;
                   checa(n);
               fin;
            fin
            sino
              deja-zumbador;
        fin
        sino
        inicio
           repetir 3 veces
             deja-zumbador;
           busca(n);
           repetir 3 veces
              coge-zumbador;
        fin;
        paso-atras;
    fin;
    repetir 2 veces
       gira-izquierda;
fin;
define-nueva-instruccion cuenta como
inicio
    si junto-a-zumbador entonces
    inicio
       coge-zumbador;
       cuenta;
       deja-zumbador;
    fin
    sino
    inicio
       dos;
       mientras junto-a-zumbador hacer
          coge-zumbador;
    fin;
fin;
define-nueva-instruccion ultimo como
inicio
    ubicate;
    principio;
    cuenta;
fin;
    inicia-ejecucion
    repetir 4 veces
       deja-zumbador;
    mira-norte;
    busca(0);
    ultimo;
        apagate;
    termina-ejecucion
finalizar-programa
