E566. Le tournoi
Problème proposé par Augustin Genoud
Les cinq équipes A, B, C, D, E disputent un tournoi dans lequel chacune joue une seule fois contre les quatre autres équipes. On sait que l’équipe A a battu C par 3 à 2 et qu’il n’y a pas eu deux scores identiques sur toutes les parties du tournoi (4 à 2 est identique à 2 à 4). Pour chaque match, on a attribué 2 points à l’équipe gagnante, 0 point à la perdante et 1 point à chacune en cas de match nul.
Dans le tableau ci-dessous, on trouve, par ligne, pour chacune des équipes, les informations suivantes :
Dans la première colonne, l’équipe;
Dans la deuxième colonne, le rang;
Dans la troisième colonne, le nombre de buts marqués;
Dans la quatrième colonne, le nombre de buts reçus;
Dans la dernière colonne, le nombre de points obtenus.
Quels sont les scores de tous les matches ? Solution proposée par Maurice Bauval
Les résultats ( obtenus par ordinateur - voir en annex programme en langage Turbo Pascal ) sont résumés comme suit :
Par ligne les buts marqués par A,B,C,D,E Par colonne les buts reçus par A,B,C,D,E
A B C D E total
A X 2 3 0 1 6
B 2 X 1 0 1 4
C 2 0 X 4 2 8
D 0 3 0 X 1 4
E 3 1 0 2 X 6
total 7 6 4 6 5 28
Notations : on considère 18 inconnues :
ab, (ac=3), ad, ae, ba, bc, bd, be, (ca=2), cb, cd, ce, da, db, dc, de, ea, eb, ec, ed Chaque xy désigne le nombre de buts marqués par x dans le matche qui l'oppose à y.
Comme le total des buts reçus par C est 4 et comme ac=3, on pourra considérer trois cas : {bc=1, dc=0, ec=0} ou {bc=0, dc=1, ec=0} ou {bc=0, dc=0, ec=1} .
Comme le total des buts marqués par A est 6 et comme ac=3, on a ab≤3, ad≤3, , ae≤3.
Le début de l'algorithme est :
Pour ab de 0 à 3, pour ad de 0 à 3 , ae:= 3 – ab – ad Pour ba de 0 à 4, pour da de 0 à 4, ea:= 5 – ba – ea Pour cb de 0 à 6, pour cd de 0 à 6, ce:= 6 – cb – cd
Pour db de 0 à 4, de:= 4 – da – db – dc, be:= 5 – ae – ce – de, bd:= 4 – ba – bc – be, eb:= 6 – ab – cb – db, ed:= 6 – ea – eb – ec,
{On a tenu compte de 7 des 8 équations disponibles, ensemble elles impliquent la huitième qui serait ad+bd+cd+ed = 6 }
On élimine tous les cas où l'une des 18 inconnues est négative.
Pour calculer le nombre de points de chaque équipe, on définit la procédure point(u,v ;var pu,pv) elle ajoute 2 à pu si u>v, 2 à pv si v>u, et 1 à chacun si u=v.
pb, pc, pd, pe sont initialisés à 0, pa est initialisé à 2 ( car le résultat de A contre C est connu ) la procédure est appliquée neuf fois ( pour chacun des 10 matches sauf celui de A contre C ).
On ne garde que les cas où pa=4 et pb=4 et pc=4 et pd=3 et pe=5
Pour comparer les scores qui doivent être tous différents on forme les dix nombres suivants : sc0, sc1, sc2, sc3, sc4, sc5, sc6, sc7, sc8, sc9 associés aux 10 rencontres :
si u et v sont les nombres de buts marqués par chacun des deux adversaires, si u > v , sc:= 10*u+v, sinon sc:= 10*v+u.
On ne garde que les cas où
abs[(sc0 – sc1)*(sc0 – sc2)*(sc0 – sc3)*(sc0 – sc4)*(sc0 – sc5)*(sc0 – sc6)*(sc0 – sc7)*(sc0 – sc8)*(sc0 – sc9) ] > 0 et
abs[(sc1 – sc2)*(sc1 – sc3)*(sc1 – sc4)*(sc1 – sc5)*(sc1 – sc6)*(sc1 – sc7)*(sc1 – sc8)*(sc1 – sc9) ] > 0 et
abs[(sc2 – sc3)*(sc2 – sc4)*(sc2 – sc5)*(sc2 – sc6)*(sc2 – sc7)*(sc2 – sc8)*(sc2 – sc9) ] > 0 et abs[(sc3 – sc4)*(sc3 – sc5)*(sc3 – sc6)*(sc3 – sc7)*(sc3 – sc8)*(sc3 – sc9) ] > 0 et
abs[(sc4 – sc5)*(sc4 – sc6)*(sc4 – sc7)*(sc4 – sc8)*(sc4 – sc9) ] > 0 et abs[(sc5 – sc6)*(sc5 – sc7)*(sc5 – sc8)*(sc5 – sc9) ] > 0 et
abs[(sc6 – sc7)*(sc6 – sc8)*(sc6 – sc9) ] > 0 et
abs[(sc7 – sc8)*(sc7 – sc9) ] > 0 et abs[sc8 – sc9 ] > 0.
{bc=0, dc=1, ec=0} ou {bc=0, dc=0, ec=1} ne donnent aucun résultat,
Mais avec{bc=1, dc=0, ec=0} , un seul cas subsiste, avec les scores tous différents : 2à2, 3à2, 0à0, 3à1, 1à0, 3à0, 1à1, 4à0, 2à0, 2à1.
Annexe
Programme en langage Trubo-Pascal