B : Choix de groupes

Vous devez réaliser un programme permettant à des étudiants de choisir les groupes pour les cours de leur choix en fonction de la commande de cours pour une session en évitant les conflits d’horaire.

Entrée

La commande est entrée en premier dans le système par le biais de l’entrée standard. La commande de chaque groupe cours est décrite au moyen de périodes qui se donnent chaque semaine et qui peuvent être de plusieurs types (cours, exercice, atelier). Pour un groupe-cours on peut avoir une ou plusieurs périodes de cours et éventuellement une ou plusieurs périodes d’atelier ou d’exercice. Toutes les périodes d’atelier ou d’exercice pour un groupe cours ont nécessairement lieu en même temps. Chaque entrée sur une ligne décrit une période pour un groupe-cours. Elle est composée des indications suivantes :

Sigle du cours, type de la période, numéro du groupe, jour, horaire de début, horaire de fin.

L’entrée sur une ligne se termine par un point et chaque élément est séparé du suivant par une virgule. Les espaces sont non significatifs.

Cette série d’entrées se termine par une ligne contenant le mot fin suivi d’un point.

L’entrée se poursuit avec la liste des sigles de cours souhaités. Chaque choix est entré sur une ligne terminée par un point.

La série se termine par une ligne contenant le mot fin suivi d’un point.

Sortie

La sortie sur la sortie standard est formée de lignes. Chacune d’elle correspond à une possibilité de choix de groupe pour les cours souhaités. Chaque combinaison de groupe-cours est séparée de la suivante sur la ligne par une virgule. La série se termine par un point. Il peut y avoir des espaces entre les éléments. L’ordre des éléments dans la série est quelconque de même que l’ordre des possibilités.

La liste des possibilités est établie en fonction de la commande en respectant la contrainte suivante.

·        Pour une combinaison de choix valide de groupes-cours figurant sur une ligne, aucune des périodes (cours, atelier ou exercice) ne doit entrer en conflit d’horaire avec les autres périodes des autres groupes-cours.

·        Si un choix est invalide (cours inexistant dans la commande par exemple) ou si une impossibilité est détectée alors la liste des possibilités est vide et il n’y a pas de sortie.

Exemple 1

 Entrée

eco1081,cours,40,jeudi,18:30,22:00.

eco1082,cours,40,vendredi,18:30,22:00.

eco1081,atelier,40,vendredi,18:00,23:00.

fin.

eco1081.

eco1082.

fin.

Sortie (aucune sortie dans ce cas : conflit cours eco1082-40 avec atelier eco1081-40)

Exemple 2

 Entrée

inf2110,cours,30,mercredi,13:30,15:00.

inf2110,cours,30,vendredi,13:30,15:30.

inf2110,cours,31,mercredi,17:30,19:00.

inf2110,cours,31,vendredi,17:30,19:30.

inf2160,cours,30,mercredi,13:30,15:30.

inf2160,cours,30,vendredi,13:30,15:00.

inf2160,cours,31,mercredi,17:30,19:00.

inf2160,cours,31,vendredi,17:30,19:30.

inf2170,cours,20,mardi,17:30,19:30.

inf2170,cours,20,jeudi,17:30,19:00.

inf2170,cours,30,mercredi,8:30,10:00.

inf2170,cours,30,vendredi,10:0,12:00.

inf3102,cours,20,mardi,13:30,15:00.

inf3102,cours,20,jeudi,13:30,15:30.

inf3102,cours,21,mardi,17:30,19:30.

inf3102,cours,21,jeudi,17:30,19:00.

fin.

inf3102.

inf2160.

fin.

Sortie

inf3102-20,inf2160-30.

inf2160-30, inf3102-21.

inf3102-21 ,inf2160-31.

 inf3102-20,  inf2160-31  .