Files
resatennis_tyroltenn/www/corpo/alban/alban.reg.mer

1021 lines
25 KiB
Plaintext
Executable File

;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