iniciar-programa
define-nueva-instruccion g(n) como
repetir n veces
gira-izquierda;
define-nueva-instruccion compara(n) como
inicio
      repetir n veces
      inicio
            si junto-a-zumbador entonces
            coge-zumbador
            sino
            inicio
                 mientras no-orientado-al-norte hacer
                 g(1);
                 repetir precede(n) veces
                 deja-zumbador;
            fin;
      fin;
    si no-orientado-al-norte y junto-a-zumbador entonces
    inicio
       compara(n);
       repetir n veces
       deja-zumbador;
    fin;
    si no-orientado-al-norte entonces
      repetir n veces
      deja-zumbador;
fin;
define-nueva-instruccion mina como
inicio
repetir 4 veces
inicio
       si orientado-al-este entonces
        inicio
              si frente-libre entonces
             inicio
                 avanza;
                 si junto-a-zumbador entonces
                 inicio
                  compara(9);
                 si orientado-al-norte entonces
                 deja-zumbador;
                 fin
                 sino
                 deja-zumbador;
                 mientras no-orientado-al-sur hacer g(1);
                 si frente-libre entonces
                 inicio
                       avanza;
                        si junto-a-zumbador entonces
                        inicio
                        compara(9);
                        si orientado-al-norte entonces
                        deja-zumbador;
                        fin
                        sino
                        deja-zumbador;
                        mientras no-orientado-al-norte hacer
                        g(1);
                        avanza;
                 fin;
                mientras no-orientado-al-oeste hacer
                 g(1);
                 avanza;
                 g(2);
           fin;
        fin
        sino
        si orientado-al-norte entonces
        inicio
              si frente-libre entonces
             inicio
                 avanza;
                 g(1);
 si junto-a-zumbador entonces
                 inicio
                  compara(9);
                 si orientado-al-norte entonces
                 deja-zumbador;
                 fin
                 sino
                 deja-zumbador;

                 mientras no-orientado-al-este hacer g(1);
                 si frente-libre entonces
                 inicio
                       avanza;
                        si junto-a-zumbador entonces
                        inicio
                        compara(9);
                        si orientado-al-norte entonces
                        deja-zumbador;
                        fin
                        sino
                        deja-zumbador;
                        mientras no-orientado-al-oeste hacer
                        g(1);
                        avanza;

                 fin;
                 mientras no-orientado-al-sur hacer
                 g(1);
                 avanza;
                 g(2);
           fin;

          fin
          sino
          si orientado-al-oeste entonces
          inicio
            si frente-libre entonces
             inicio
                 avanza;
 si junto-a-zumbador entonces
                 inicio
                  compara(9);
                 si orientado-al-norte entonces
                 deja-zumbador;
                 fin
                 sino
                 deja-zumbador;

                 mientras no-orientado-al-norte hacer g(1);
                 si frente-libre entonces
                 inicio
                       avanza;
                       g(2);
                        si junto-a-zumbador entonces
                        inicio
                        compara(9);
                        si orientado-al-norte entonces
                        deja-zumbador;
                        fin
                        sino
                        deja-zumbador;
                        mientras no-orientado-al-sur hacer
                        g(1);
                        avanza;

                 fin;
                 mientras no-orientado-al-este hacer
                 g(1);
                 avanza;
                 g(2);
           fin;
          fin
          sino
          si orientado-al-sur entonces
          inicio
               si frente-libre entonces
             inicio
                 avanza;
                si junto-a-zumbador entonces
                 inicio
                  compara(9);
                 si orientado-al-norte entonces
                 deja-zumbador;
                 fin
                 sino
                 deja-zumbador;

                 mientras no-orientado-al-oeste hacer g(1);
                 si frente-libre entonces
                 inicio
                       avanza;
                        si junto-a-zumbador entonces
                        inicio
                        compara(9);
                        si orientado-al-norte entonces
                        deja-zumbador;
                        fin
                        sino
                        deja-zumbador;
                        mientras no-orientado-al-este hacer
                        g(1);
                        avanza;

                 fin;
                 mientras no-orientado-al-norte hacer
                 g(1);
                 avanza;
                 g(2);
           fin;
          fin;
     g(1);
   fin;
fin;
define-nueva-instruccion busca como
inicio

   si orientado-al-este entonces
   inicio
     si junto-a-zumbador entonces
     inicio
      compara(9);
      si no-orientado-al-norte  entonces
      mina;
      fin;
       mientras no-orientado-al-este hacer
          g(1);
    fin
    sino
    si orientado-al-oeste entonces
    inicio
          si junto-a-zumbador entonces
          inicio
          compara(9);
         si no-orientado-al-norte entonces
           mina;
           fin;
          mientras no-orientado-al-oeste hacer
          g(1);
    fin;


  si frente-libre entonces
     avanza
     sino
     inicio
          si orientado-al-este entonces
          inicio
                g(1);
                si frente-libre entonces
                avanza
                sino
                apagate;
                g(1);
          fin
          sino
          si orientado-al-oeste entonces
          inicio
                g(3);
                si frente-libre entonces
                avanza
                sino
                apagate;
                g(3);
          fin;
     fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-oeste hacer
    g(1);
    mientras frente-libre hacer
    avanza;
    g(1);
    mientras frente-libre hacer
    avanza;
    g(1);
    mientras no-orientado-al-norte hacer
    busca;
        apagate;
    termina-ejecucion
finalizar-programa
