Buenas, estoy realizando un pequeño programa para encasillar aleatoriamente a los participantes de una competición. Lo principal a tener en cuenta es que la competición puede tener desde 4 hasta 16 competidores. Cómo máximo podrá haber 4 titulares, los cuales tienen que estar separados hasta una final o semifinal. Esto lo veo fácil, el problema está en que también deben de estar ordenados por provincias, me explico, si es posible que se haga de alguna forma en que esos dos competidores de una misma provincia no se enfrenten hasta un nivel determinado teniendo en cuenta también los titulares y que estos tendrán prioridad con respecto a las provincias, ejemplo:
Tenemos cuatro competidores 1.Granada (Titular), 2. Granada, 3. Córdoba(Titular), 4. Sevilla
Las Primera semifinal podría ser: 1-4 y la segunda: 3-2
Principalmente así porque primero tenemos en cuenta los titulares, los separamos cada uno a un cuadrante diferente y en segundo lugar las provincias, como vemos que el 2 es Granada pues este lo enfrentamos con el 3 ya que el 1 es de la misma provincia. Esto es un ejemplo sencillo, pero tendríamos que tener en cuenta todas las opciones, que si los cuatro son titulares, o uno sólo, o ninguna provincia igual, o tres iguales... y eso sólo sería con cuatro participantes, puede haber hasta 16.
Quisiera hacer esto en C# aunque de primeras sólo me interesa un algoritmo sencillo ya que todo lo que se me ocurre tiene cientos de líneas de código y no creo que sea tan complicado.
Gracias por la ayuda, llevo bastante dándole al tarro y no consigo nada eficiente.
Un saludo.