iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;

define-nueva-instruccion rodear como
inicio
 norte;
 si frente-libre entonces
   inicio
     avanza;
     si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         si junto-a-zumbador entonces repetir 2 veces deja-zumbador
         sino deja-zumbador;
       fin
     sino repetir 2 veces deja-zumbador;
     repetir 2 veces gira-izquierda;
     avanza;
   fin;
 este;
 si frente-libre entonces
   inicio
     avanza;
     si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         si junto-a-zumbador entonces repetir 2 veces deja-zumbador
         sino deja-zumbador;
       fin
     sino repetir 2 veces deja-zumbador;
     repetir 2 veces gira-izquierda;
     avanza;
   fin;
 sur;
 si frente-libre entonces
   inicio
     avanza;
     si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         si junto-a-zumbador entonces repetir 2 veces deja-zumbador
         sino deja-zumbador;
       fin
     sino repetir 2 veces deja-zumbador;
     repetir 2 veces gira-izquierda;
     avanza;
   fin;
 oeste;
 si frente-libre entonces
   inicio
     avanza;
     si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         si junto-a-zumbador entonces repetir 2 veces deja-zumbador
         sino deja-zumbador;
       fin
     sino repetir 2 veces deja-zumbador;
     repetir 2 veces gira-izquierda;
     avanza;
   fin;
 norte;
fin;

define-nueva-instruccion marca como
  inicio
    mientras orientado-al-norte hacer
      inicio
        mientras no-junto-a-zumbador y frente-libre hacer avanza;
        si junto-a-zumbador entonces
          inicio
            coge-zumbador;
            si no-junto-a-zumbador entonces
              inicio
                deja-zumbador;
                rodear;
              fin
            sino deja-zumbador;
          fin;
        si frente-libre entonces avanza
        sino
          inicio
            sur;
              si izquierda-libre entonces
                inicio
                  mientras frente-libre hacer avanza;
                  este;
                  avanza;
                  norte;
                fin;
          fin;
      fin;
  fin;

define-nueva-instruccion eliminar como
inicio
  mientras orientado-al-norte hacer
    inicio
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
      si junto-a-zumbador entonces coge-zumbador;
      si frente-libre entonces avanza
      sino
        inicio
          sur;
           si izquierda-libre entonces
             inicio
               mientras frente-libre hacer avanza;
               este;
               avanza;
               norte;
             fin;
        fin;

    fin;
fin;

define-nueva-instruccion contar como
inicio
  mientras orientado-al-norte hacer
    inicio
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
      si frente-bloqueado y no-junto-a-zumbador entonces
        inicio
          sur;
          si izquierda-libre entonces
            inicio
              mientras frente-libre hacer avanza;
              este;
              avanza;
              norte;
            fin
         sino
           inicio
             oeste;
             mientras frente-libre hacer avanza;
             sur;
             mientras frente-libre hacer avanza;
           fin;
        fin;
      si junto-a-zumbador entonces
        inicio
          coge-zumbador;
          contar;
          si orientado-al-sur entonces deja-zumbador;
        fin;

    fin;

fin;

    inicia-ejecucion
    sur;
    mientras frente-libre hacer avanza;
    oeste;
    mientras frente-libre hacer avanza;
    norte;
    marca;
    sur;
    mientras frente-libre hacer avanza;
    oeste;
    mientras frente-libre hacer avanza;
    norte;                                     
    eliminar;
    sur;
    mientras frente-libre hacer avanza;
    oeste;
    mientras frente-libre hacer avanza;
    norte;
    contar;
        apagate;
    termina-ejecucion
finalizar-programa
