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 torneo(x) como
inicio
    mientras junto-a-zumbador hacer
      inicio
        coge-zumbador;
        si no-junto-a-zumbador y orientado-al-norte entonces
          inicio
            mientras frente-libre hacer
             inicio
               repetir sucede(x) veces si frente-libre entonces avanza;
               deja-zumbador;
             fin;
           si frente-bloqueado y orientado-al-norte entonces
             inicio
               sur;
               repetir sucede(x) veces avanza;
               si no-junto-a-zumbador entonces
                 inicio
                    norte;             
                    mientras frente-libre hacer avanza;
                    mientras junto-a-zumbador hacer coge-zumbador;
                fin;
              sur;
              mientras frente-libre hacer avanza;
             fin;
          fin;
        torneo(sucede(x));
      fin;


fin;

define-nueva-instruccion iguales(k) como
inicio
  mientras orientado-al-norte hacer
    inicio
      mientras no-junto-a-zumbador hacer
        inicio
          avanza;
          iguales(sucede(k));
        fin;
     si junto-a-zumbador entonces
       inicio
         coge-zumbador;
         este;
         avanza;
         si junto-a-zumbador entonces
           inicio
             sur;
             mientras frente-libre hacer avanza;
             este;
             avanza;
             repetir k veces deja-zumbador;
             apagate;
           fin                               
         sino
          inicio
            oeste;
            avanza;
            norte;
          fin;
       fin;
    fin;

fin;

    inicia-ejecucion
    oeste;
    mientras frente-libre hacer avanza;
    sur;
    mientras frente-libre hacer avanza;
    norte;
    torneo(0);
    este;
    avanza;
    norte;
    torneo(0);
    oeste;
    avanza;
    norte;
    iguales(0);
        apagate;
    termina-ejecucion
finalizar-programa
