;etape 0 initialisation terrains + creation des couples d'equipe et placement des couples en fction des journees; ;etape 1 placement d'un match; ;etape 2 changement journee ou pas; ;etape 3 changement semaine ou pas; REGLE CALCUL_NOMBRE_JOURNEE ;*------------CALCUL DU NOMBRE DE JOURNEE PAR DIVISION-----------------*; SI (D) NB_EQUIPE (NB) ALORS (D) NB_JOURNEE (((((NB) + 1) DIV 2) * 2) - 1) REGLE JOUR_FERIE SI (C) ' = COURT (S) ' = SEMAINE (C) DAY (D) (S) FERIE (D) ALORS (C) OCCUPE (S) ; REGLE TERRAIN_DEBUTE_TARD DES_QUE (C) ' = COURT (S) ' = SEMAINE (S_PREC) ' = SEMAINE (C) COMMENCE_APRES (S) (S) SUIT (S_PREC) ALORS (C) OCCUPE (S) (C) COMMENCE_APRES (S_PREC) ; ;*-----------------TERRAIN AVEC ACCES PARTICILIER---------------------*; REGLE TERRAIN_PROPRIETAIRE_E1 ;* E1 proprietaire de terrain*; SI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_DIV (D) (E2) JOUE_DIV (D) (E1)<>(E2) (C) ' = COURT (C) PERMIS (E1) ALORS ((E1) CONTRE (E2)) SUR (C) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE REGLE TERRAIN_PROPRIETAIRE_E2 ;* E2 proprietaire de terrain*; SI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_DIV (D) (E2) JOUE_DIV (D) (E1)<>(E2) (C) ' = COURT (C) PERMIS (E2) ALORS ((E1) CONTRE (E2)) SUR (C) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE REGLE TERRAIN_IMPOSSIBLE_E1 ;*terrain interdit pour une equipe qui ne veut pas y jouer*; SI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1)<>(E2) (E1) JOUE_DIV (D) (E2) JOUE_DIV (D) (C) ' = COURT (C) IMPOSSIBLE (E1) ALORS ((E1) CONTRE (E2)) SUR (C) ' INEXISTANT REGLE TERRAIN_IMPOSSIBLE_E2 ;*terrain interdit pour une equipe qui ne veut pas y jouer*; SI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1)<>(E2) (E1) JOUE_DIV (D) (E2) JOUE_DIV (D) (C) ' = COURT (C) IMPOSSIBLE (E2) ALORS ((E1) CONTRE (E2)) SUR (C) ' INEXISTANT ;*----------------CREATION DES MATCHS ET JOURNEES----------------*; REGLE CREER_MATCH ;* permet de calculer l'ensemble des matches aller *; SI (E1) ' = EQUIPE (E1) JOUE_DIV (D) ALORS POUR_TOUT ((E2)) TEL_QUE [ (E2) ' = EQUIPE (E1) <> (E2) (E2) JOUE_DIV (D) (E2) JOUE_MATCH (E1) ' INEXISTANT ;* si on est deja passé avec les equipe inversées,la regle n'est plus verifie*; ] DEDUIRE [ (E1) JOUE_MATCH (E2) ;*(E2) JOUE_RETOUR_CONTRE (E1)*; ] REGLE CALCUL_JOURNEE_PAS_JOUE_E1 ;* cette regle permet de calculer la journee des rencontres pour la journee courante*; ;*on place aussi les retour plus ou moins tard en fction du nb d'equipes de la division*; SI ETAPE ' = 0 (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_MATCH (E2) JOUR_COURANT ' = (J_ALLER) (E1) JOUE_JOURNEE (J_ALLER) ' INEXISTANT (E2) JOUE_JOURNEE (J_ALLER) ' INEXISTANT (E1) JOUE_DIV (D) (D) NB_JOURNEE (NB_JOUR) (E1) PAS_JOUE VRAI ALORS (E1) JOUE_MATCH (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J_ALLER) ' VRAI ((E2) JOUE_CONTRE (E1)) JOURNEE ((J_ALLER) + (NB_JOUR)) ' VRAI (E1) JOUE_JOURNEE (J_ALLER) ' VRAI (E2) JOUE_JOURNEE (J_ALLER) ' VRAI MATCHS JOURNEE (J_ALLER) ' VRAI MATCHS JOURNEE ((J_ALLER) + (NB_JOUR)) ' VRAI REPETITION ' <-- 0 (E1) PAS_JOUE VRAI ' INEXISTANT POUR_TOUT () TEL_QUE [ (D) JOUE_BELLE VRAI ] DEDUIRE [ ((E1) JOUE_CONTRE (E2)) JOURNEE ((J_ALLER) + (NB_JOUR) + (NB_JOUR)) ' VRAI MATCHS JOURNEE ((J_ALLER) + (NB_JOUR) + (NB_JOUR)) ' VRAI ] REGLE CALCUL_JOURNEE_PAS_JOUE_E2 ;* cette regle permet de calculer la journee des rencontres pour la journee courante*; ;*on place aussi les retour plus ou moins tard en fction du nb d'equipes de la division*; SI ETAPE ' = 0 (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_MATCH (E2) JOUR_COURANT ' = (J_ALLER) (E1) JOUE_JOURNEE (J_ALLER) ' INEXISTANT (E2) JOUE_JOURNEE (J_ALLER) ' INEXISTANT (E1) JOUE_DIV (D) (D) NB_JOURNEE (NB_JOUR) (E2) PAS_JOUE VRAI ALORS (E1) JOUE_MATCH (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J_ALLER) ' VRAI ((E2) JOUE_CONTRE (E1)) JOURNEE ((J_ALLER) + (NB_JOUR)) ' VRAI (E1) JOUE_JOURNEE (J_ALLER) ' VRAI (E2) JOUE_JOURNEE (J_ALLER) ' VRAI MATCHS JOURNEE (J_ALLER) ' VRAI MATCHS JOURNEE ((J_ALLER) + (NB_JOUR)) ' VRAI REPETITION ' <-- 0 (E2) PAS_JOUE VRAI ' INEXISTANT POUR_TOUT () TEL_QUE [ (D) JOUE_BELLE VRAI ] DEDUIRE [ ((E1) JOUE_CONTRE (E2)) JOURNEE ((J_ALLER) + (NB_JOUR) + (NB_JOUR)) ' VRAI MATCHS JOURNEE ((J_ALLER) + (NB_JOUR) + (NB_JOUR)) ' VRAI ] REGLE CALCUL_JOURNEE ;* cette regle permet de calculer la journee des rencontres pour la journee courante*; ;*on place aussi les retour plus ou moins tard en fction du nb d'equipes de la division*; SI ETAPE ' = 0 (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_MATCH (E2) JOUR_COURANT ' = (J_ALLER) (E1) JOUE_JOURNEE (J_ALLER) ' INEXISTANT (E2) JOUE_JOURNEE (J_ALLER) ' INEXISTANT (E1) JOUE_DIV (D) (D) NB_JOURNEE (NB_JOUR) ALORS (E1) JOUE_MATCH (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J_ALLER) ' VRAI ((E2) JOUE_CONTRE (E1)) JOURNEE ((J_ALLER) + (NB_JOUR)) ' VRAI (E1) JOUE_JOURNEE (J_ALLER) ' VRAI (E2) JOUE_JOURNEE (J_ALLER) ' VRAI MATCHS JOURNEE (J_ALLER) ' VRAI MATCHS JOURNEE ((J_ALLER) + (NB_JOUR)) ' VRAI REPETITION ' <-- 0 POUR_TOUT () TEL_QUE [ (D) JOUE_BELLE VRAI ] DEDUIRE [ ((E1) JOUE_CONTRE (E2)) JOURNEE ((J_ALLER) + (NB_JOUR) + (NB_JOUR)) ' VRAI MATCHS JOURNEE ((J_ALLER) + (NB_JOUR) + (NB_JOUR)) ' VRAI ] REGLE FIN_CALCUL_JOURNEE ;* si apres examun des 2 regles precedentes, on a toujours repetition=1*; ;* c'est qu'on a place tous les matchs*; SI REPETITION ' = 1 ALORS ETAPE ' <-- 1 JOUR_COURANT ' <-- 1 REGLE PAS_JOUE SI (E) ' = EQUIPE JOUR_COURANT ' = (J) (E) JOUE_JOURNEE (J) ' INEXISTANT ALORS (E) PAS_JOUE VRAI REGLE CHANGER_JOURNEE ;*quand on a place tous les matchs de la journee*; SI ETAPE ' = 0 REPETITION ' = 0 JOUR_COURANT ' = (J) ALORS JOUR_COURANT ' <-- (J) + 1 REPETITION ' <-- 1 ;*---------------PLACEMENT DES MATCHS ALLER----------------*; ;*par journee et par semaine*; ;*on commence par remplir les terrain les plus contraints*; REGLE PLACEMENT_MATCH**JOUR_COURANT**PROPRIETAIRE*LUNDI ;* on place les match du lundi avec une equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 REGLE PLACEMENT_MATCH**JOUR_COURANT**PROPRIETAIRE*PAS_LUNDI ;* on place les match des autre jours avec une equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ' INEXISTANT (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 REGLE PLACEMENT_MATCH**JOUR_COURANT**LIBRE**LUNDI ;* on place les match du lundi sans equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 REGLE PLACEMENT_MATCH**JOUR_COURANT**LIBRE**PAS_LUNDI ;* on place les match des autre jours sans equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ' INEXISTANT (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E1) JOUE_SEM (S) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 ;*---------------PLACEMENT DES MATCHS ALLER----------------*; ;*par journee et par semaine*; ;*on commence par remplir les terrain les plus contraints*; REGLE PLACEMENT_MATCH**JOUR_COURANT**PROPRIETAIRE*MERCREDI ;* on place les match du lundi avec une equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY MERCREDI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 REGLE PLACEMENT_MATCH**JOUR_COURANT**PROPRIETAIRE*PAS_MERCREDI ;* on place les match des autre jours avec une equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY MERCREDI ' INEXISTANT (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 REGLE PLACEMENT_MATCH**JOUR_COURANT**LIBRE**MERCREDI ;* on place les match du lundi sans equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY MERCREDI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 REGLE PLACEMENT_MATCH**JOUR_COURANT**LIBRE**PAS_MERCREDI ;* on place les match des autre jours sans equipe proprieraire*; QUAND ETAPE ' =1 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY MERCREDI ' INEXISTANT (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT ALORS ((((E1) JOUE_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE (E2) ' VRAI (E1) JOUE_SEM (S) ' VRAI (E2) A_JOUE (E1) ' INEXISTANT (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 2 REGLE ABSCENCE_MATCH_JOUR_COURANT ;*si il n'y a pas de match a placer cette journee la*; SI ETAPE ' =1 JOUR_COURANT ' = (J) (E1) ' = EQUIPE (E2) ' = EQUIPE MATCHS JOURNEE (J) ' INEXISTANT DERNIER_JOUR ' = (J_MAX) (J) <= (J_MAX) ALORS JOUR_COURANT ' <-- JOUR_COURANT ' + 1 ;*-----CHANGEMENT DE JOURNEE----------------*; REGLE MEME_JOUR ;* il reste des match a placer dans la journee courante*; QUAND ETAPE ' = 2 JOUR_COURANT ' = (J_COUR) ((E1) JOUE_CONTRE (E2)) JOURNEE (J_COUR) (E1) A_JOUE (E2)' INEXISTANT ALORS ETAPE ' <-- 3 REGLE JOUR_SUIVANT ;* il ne reste pas de match a placer dans la journee courante*; ;* puisque l'on n'est pas passe dans la regle precedente*; ;* on passe a la journee suivante*; SI ETAPE ' = 2 JOUR_COURANT ' = (J_COUR) ALORS JOUR_COURANT ' <-- JOUR_COURANT ' + 1 (J_COUR) TRAITE VRAI ETAPE ' <-- 3 ;*-----CHANGEMENT DE SEMAINE----------------*; ;*on regarde s'il reste des matchs que l'on peut placer*; REGLE RESTE_MATCH_SEMAINE**MERCREDI**PROPRIETAIRE ;*le lundi sur un terrain proprietaire*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2) (D)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY MERCREDI ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE**MERCREDI**LIBRE ;*le lundi sur un terrain libre*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2) (D)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY MERCREDI ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE**PAS_MERCREDI**PROPRIETAIRE ;*un autre jour sur un terrain proprietaire*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE (C) DAY MERCREDI ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE**PAS_MERCREDI**LIBRE ;*un autre jour sur un terrain libre*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((E1) (E2) (C)) TEL_QUE [ (C) ' = COURT (C) DAY MERCREDI ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (C) OCCUPE (S) ' INEXISTANT (C) DAY MERCREDI ' INEXISTANT (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] ;*-----CHANGEMENT DE SEMAINE----------------*; ;*on regarde s'il reste des matchs que l'on peut placer*; REGLE RESTE_MATCH_SEMAINE**LUNDI**PROPRIETAIRE ;*le lundi sur un terrain proprietaire*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2) (D)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE**LUNDI**LIBRE ;*le lundi sur un terrain libre*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2) (D)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE**PAS_LUNDI**PROPRIETAIRE ;*un autre jour sur un terrain proprietaire*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE (C) DAY LUNDI ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE**PAS_LUNDI**LIBRE ;*un autre jour sur un terrain libre*; QUAND ETAPE ' =3 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) CONTINUER_SEMAINE ' = 0 ALORS POUR_TOUT () IL_EXISTE ((E1) (E2) (C)) TEL_QUE [ (C) ' = COURT (C) DAY LUNDI ' INEXISTANT ((E1) JOUE_CONTRE (E2)) JOURNEE (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ' INEXISTANT (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (E1) A_JOUE (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE CHANGEMENT_SEMAINE ;* si on n'a pas trouve de match a place cette semaine, on change*; SI ETAPE ' = 3 SEMAINE_COURANTE ' = (S_COUR) (S_SVT) SUIT (S_COUR) CONTINUER_SEMAINE ' = 0 ALORS SEMAINE_COURANTE ' = (S_SVT) ETAPE ' <-- 1 REGLE MEME_SEMAINE ;* sinon (on n'est pas passe dans la regle precedente)*; ;*on reinitialise*; QUAND ETAPE ' = 3 CONTINUER_SEMAINE ' = 1 ALORS ETAPE ' <-- 1 CONTINUER_SEMAINE ' <-- 0 ^ REGLE FIN_MATCH ;*si on n'a pas pu passer dans aucune des regles *; ;*MEME_JOUR ou JOUR_SUIVANT*; ;* on passe aux matchs retours*; SI ETAPE ' = 2 JOUR_COURANT ' = (J) DERNIER_JOUR ' =(J) ALORS JOUR_COURANT '<-- 1 ETAPE ' <-- 6;* on commence par regarder si on doit changer de semaine*; ;*---------------PLACEMENT DES MATCHS RETOUR----------------*; ;*par journee et par semaine*; ;*meme chose que pour les matchs aller*; REGLE PLACEMENT_MATCH**RETOUR**JOUR_COURANT**PROPRIETAIRE**LUNDI QUAND ETAPE ' =4 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ALORS ((((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE_RETOUR (E2) ' VRAI (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 5 REGLE PLACEMENT_MATCH**RETOUR**JOUR_COURANT**PROPRIETAIRE**PAS_LUNDI QUAND ETAPE ' =4 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ' INEXISTANT (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ALORS ((((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE_RETOUR (E2) ' VRAI (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 5 REGLE PLACEMENT_MATCH**RETOUR**JOUR_COURANT**LIBRE**LUNDI QUAND ETAPE ' =4 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT ALORS ((((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE_RETOUR (E2) ' VRAI (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 5 REGLE PLACEMENT_MATCH**RETOUR**JOUR_COURANT**LIBRE**PAS_LUNDI QUAND ETAPE ' =4 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ' INEXISTANT (E1) ' = EQUIPE (E2) ' = EQUIPE (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT ALORS ((((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J)) PDT_SEM (S)) SUR_COURT (C) (C) OCCUPE (S) ' VRAI (E1) A_JOUE_RETOUR (E2) ' VRAI (E1) JOUE_SEM (S) ' VRAI (E2) JOUE_SEM (S) ' VRAI ECRIRE(ENVOI, (E1) "&" (E2) "&" (S) "&" (C) "&" ) ETAPE ' <-- 5 REGLE ABSCENCE_RETOUR_JOUR_COURANT SI ETAPE ' =4 JOUR_COURANT ' = (J) (E1) ' = EQUIPE (E2) ' = EQUIPE ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) 'INEXISTANT ALORS ETAPE ' <-- 5 REGLE MEME_JOUR_RETOUR QUAND ETAPE ' = 5 ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J_COUR) JOUR_COURANT ' = (J_COUR) (E1) A_JOUE_RETOUR (E2)' INEXISTANT ALORS ETAPE ' <-- 6 REGLE JOUR_SUIVANT_RETOUR SI ETAPE ' = 5 ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J_SVT) (J_SVT) TRAITE_RETOUR VRAI ' INEXISTANT JOUR_COURANT ' = (J_COUR) (J_SVT) APRES (J_COUR) ALORS JOUR_COURANT ' <-- (J_SVT) (J_COUR) TRAITE_RETOUR VRAI ETAPE ' <-- 6 REGLE RESTE_MATCH_SEMAINE_RETOUR**LUNDI**PROPRIETAIRE QUAND ETAPE ' =6 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2) (D)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) JOUR_COURANT ' = (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE_RETOUR**LUNDI**LIBRE QUAND ETAPE ' =6 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2) (D)) TEL_QUE [ (C) ' = COURT (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) JOUR_COURANT ' = (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) JOUE_DIV (D) (D) JOUE_LIGUE (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE_RETOUR**PAS_LUNDI**PROPRIETAIRE QUAND ETAPE ' =6 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2)) TEL_QUE [ (C) ' = COURT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ' INEXISTANT ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) JOUR_COURANT ' = (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT (((E1) CONTRE (E2)) SUR (C)) TYPE PROPRIETAIRE ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE RESTE_MATCH_SEMAINE_RETOUR**PAS_LUNDI**LIBRE QUAND ETAPE ' =6 SEMAINE_COURANTE ' = (S) JOUR_COURANT ' = (J) ALORS POUR_TOUT () IL_EXISTE ((C) (E1) (E2)) TEL_QUE [ (C) ' = COURT (C) PERMIS (E2) ' INEXISTANT (C) PERMIS (E1) ' INEXISTANT (C) IMPOSSIBLE (E2) ' INEXISTANT (C) IMPOSSIBLE (E1) ' INEXISTANT (C) OCCUPE (S) ' INEXISTANT (C) DAY LUNDI ' INEXISTANT ((E1) JOUE_RETOUR_CONTRE (E2)) JOURNEE (J) JOUR_COURANT ' = (J) (E1) JOUE_SEM (S) ' INEXISTANT (E2) JOUE_SEM (S) ' INEXISTANT (E1) A_JOUE_RETOUR (E2) ' INEXISTANT ] DEDUIRE [ CONTINUER_SEMAINE ' <-- 1 ] REGLE CHANGEMENT_SEMAINE_RETOUR SI ETAPE ' = 6 SEMAINE_COURANTE ' = (S_COUR) (S_SVT) SUIT (S_COUR) CONTINUER_SEMAINE ' = 0 ALORS SEMAINE_COURANTE ' = (S_SVT) ETAPE ' <-- 4 REGLE MEME_SEMAINE_RETOUR QUAND ETAPE ' = 6 CONTINUER_SEMAINE ' = 1 ALORS ETAPE ' <-- 4 CONTINUER_SEMAINE ' <-- 0