Enunciado


Definir un predicado:

torneoIdaYVueltaConCondicionesYArbitros(Equipos, Conds, Arbitros, Torneo).

Verdadero cuando Torneo es un torneo de ida y vuelta para los equipos de Equipos, respetando las restricciones en Conds (condiciones) y dirigido por árbitros de Árbitros.

El torneo resultante tendrá entonces n−1 fechas, donde n es la cantidad de equipos.

La estructura resultante es:

torneo(apertura(FechasLocales), clausura(FechasVisitantes))

donde las FechasVisitantes son el “espejo” de FechasLocales.

Recordar que dos fechas son consideradas iguales si tienen el mismo número y los mismos partidos, no importa en qué orden y con qué repeticiones.

Asignación de arbitros:

Para solucionar el tema de la asignación de árbitros debemos definir un predicado

fechaConArbitros(Arbitros, Fecha, FechaConArbitros)

verdadero cuando FechaConArbitros es una fecha igual a Fecha a la que se han asignado árbitros distintos tomados del conjunto Árbitros. Los elementos de FechaConArbitros serán de la estructura dirigido(partido, arbitro), donde Partido es un partido de Fecha.

Ejemplo:

?- fechaConArbitros([gimenez, pezzota, beligoy],
                             fecha(1, [partido(boca, river),partido(racing, velez)]),
                             Fecha).

Fecha = fecha(1, [dirigido(gimenez, partido(boca, river)),
         dirigido(pezzota, partido(racing, velez))]) ;
Fecha = fecha(1, [dirigido(gimenez, partido(boca, river)),
         dirigido(beligoy, partido(racing, velez))]) ;
Fecha = fecha(1, [dirigido(pezzota, partido(boca, river)),
         dirigido(gimenez, partido(racing, velez))]) ;
Fecha = fecha(1, [dirigido(pezzota, partido(boca, river)),
                             dirigido(beligoy, partido(racing, velez))]) ;