Et si la LNH avait un système de relégation?
Des fois je pense à des affaires bizarres. Mettons que la Ligue Nationale de Hockey (LNH) avait un système de promotion et relégation, comme au soccer européen. Quessé ça donne?
Étant fan d'histoire alternative et de programmation de trucs complètement débiles, fallait que j'explore l'idée, que j'écrive une simulation. Le pire, c'est que c'est entièrement faisable! Le code fait même pas 100 lignes de JavaScript!
En premier, faudra se mettre une couple de règles. Y'a beaucoup de possibilités, mais on va faire ça simple. Par exemple, on va partir la simulation en 1967. Pourquoi? C'est l'année où la LNH a passé de 6 à 12 équipes, et ils ont mis toutes les nouvelles équipes dans la même division Ouest.
Division Est | Division Ouest |
---|---|
Blackhawks de Chicago | Blues de St-Louis |
Bruins de Boston | Flyers de Philadelphia |
Canadiens de Montréal | Kings de Los Angeles |
Maple Leafs de Toronto | North Stars du Minnesota* |
Rangers de New York | Penguins de Pittsburgh |
Red Wings de Detroit | Seals de Oakland* |
Probablement une bonne année pour faire de la division Est notre division 1, et l'Ouest la division 2. Parce que ça avait pris un bout avant que les nouvelles équipes soient bonnes, ça aurait pu donner une nouvelle dimension aux stats. Également:
- Chaque année, les deux pires équipes de division 1 sont relégués en division 2, et les deux meilleures de division 2 sont promus en division 1.
- Seulement les matchs intradivision compteraient dans le calcul. Dans notre histoire alternative, il y aurait quand même des matchs interdivision mais qui compteraient seulement pour le format des playoffs, qu'on ne toucherait pas pour le moment.
- Chaque nouvelle équipe est ajoutée en division 2, et au besoin, on relègue moins, voire aucune équipe, histoire de garder les deux divisions sensiblement de la même grosseur. Au besoin, on ferait un ajustement similaire à la suppression d'une équipe, mais c'est encore jamais arrivé: Cleveland était en division 2 lors de sa fusion, et le Utah HC a pu remplacer les Coyotes de l'Arizona également en division 2, comme une équipe déménagée qui pourra garder sa place dans la division de son prédécesseur.
Justement, les stats: la LNH a un beau site web fancy exprès juste pour ça. On peut aller chercher pratiquement n'importe quoi, du genre les statistiques des Canadiens contre toutes les autres équipes depuis la fondation de la ligue en 1917, ou encore la date où Connor McDavid a compté son 1000e point. Et, on va pas faire ça manuellement pour toutes les saisons depuis 1967, ils ont sûrement une API pour ça, non? Eh ben oui. Et c'est complètement gratuit, en plus.
Donc le but de l'exercice: aller chercher seulement les statistiques pour les matchs joués par deux équipes d'une même division en ignorant les autres matchs. Et c'est là que c'est le fun: on peut sortir ça en seulement une requête déjà triée. Voici un petit programme en JavaScript qui fait exactement ça:
Et voici à peu près ce que ça donne pour la saison 1967-68:
Division 1
franchiseId | franchiseName | gamesPlayed | wins | losses | ties | goalsFor | goalsAgainst | points | pointPct | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 'Canadiens de Montréal' | 50 | 26 | 17 | 7 | 160 | 121 | 59 | 0.59 |
1 | 6 | 'Bruins de Boston' | 50 | 23 | 18 | 9 | 174 | 148 | 55 | 0.55 |
2 | 5 | 'Maple Leafs de Toronto' | 50 | 23 | 20 | 7 | 132 | 120 | 53 | 0.53 |
3 | 10 | 'Rangers de New York' | 50 | 22 | 19 | 9 | 143 | 138 | 53 | 0.53 |
4 | 11 | 'Blackhawks de Chicago' | 50 | 17 | 22 | 11 | 135 | 173 | 45 | 0.45 |
5 | 12 | 'Red Wings de Detroit' | 50 | 13 | 28 | 9 | 147 | 191 | 35 | 0.35 |
Division 2
franchiseId | franchiseName | gamesPlayed | wins | losses | ties | goalsFor | goalsAgainst | points | pointPct | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 16 | 'Flyers de Philadelphie' | 50 | 23 | 17 | 10 | 118 | 108 | 56 | 0.56 |
1 | 18 | 'Blues de St. Louis' | 50 | 22 | 18 | 10 | 119 | 108 | 54 | 0.54 |
2 | 17 | 'Penguins de Pittsburgh' | 50 | 21 | 19 | 10 | 136 | 126 | 52 | 0.52 |
3 | 15 | 'Stars de Dallas' | 50 | 20 | 19 | 11 | 142 | 140 | 51 | 0.51 |
4 | 14 | 'Kings de Los Angeles' | 50 | 21 | 21 | 8 | 129 | 140 | 50 | 0.5 |
5 | 13 | 'Barons de Cleveland' | 50 | 11 | 24 | 15 | 115 | 137 | 37 | 0.37 |
Ensuite, pour la saison 1968-69, on pourra transférer les Flyers et les Blues dans la Division 1 et les Blackhawks et les Red Wings en seconde division, et on répète l'exercice.
franchiseId | franchiseName | gamesPlayed | wins | losses | ties | goalsFor | goalsAgainst | points | pointPct | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 'Canadiens de Montréal' | 36 | 19 | 12 | 5 | 117 | 94 | 43 | 0.59722 |
1 | 6 | 'Bruins de Boston' | 36 | 17 | 11 | 8 | 131 | 109 | 42 | 0.58333 |
2 | 10 | 'Rangers de New York' | 36 | 17 | 12 | 7 | 103 | 96 | 41 | 0.56944 |
3 | 5 | 'Maple Leafs de Toronto' | 36 | 14 | 14 | 8 | 110 | 117 | 36 | 0.5 |
4 | 18 | 'Blues de St. Louis' | 32 | 10 | 15 | 7 | 79 | 86 | 27 | 0.42187 |
5 | 16 | 'Flyers de Philadelphie' | 32 | 6 | 19 | 7 | 61 | 99 | 19 | 0.29687 |
franchiseId | franchiseName | gamesPlayed | wins | losses | ties | goalsFor | goalsAgainst | points | pointPct | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 12 | 'Red Wings de Detroit' | 32 | 19 | 11 | 2 | 117 | 95 | 40 | 0.625 |
1 | 11 | 'Blackhawks de Chicago' | 32 | 18 | 12 | 2 | 135 | 99 | 38 | 0.59375 |
2 | 13 | 'Barons de Cleveland' | 36 | 17 | 13 | 6 | 124 | 114 | 40 | 0.55555 |
3 | 14 | 'Kings de Los Angeles' | 36 | 13 | 17 | 6 | 100 | 127 | 32 | 0.44444 |
4 | 17 | 'Penguins de Pittsburgh' | 36 | 13 | 20 | 3 | 105 | 118 | 29 | 0.40277 |
5 | 15 | 'Stars de Dallas' | 36 | 12 | 19 | 5 | 103 | 131 | 29 | 0.40277 |
Et on répète pour chaque saison, en prenant bien soin de tenir en compte les additions et soustractions d'équipes, et, uh, la saison 2004-05...
...et on a un classement pour 2023-24, que voici:
ranking | franchiseId | franchiseName | gamesPlayed | wins | losses | otLosses | goalsFor | goalsAgainst | points | pointPct | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 7 | 6 | 'Bruins de Boston' | 39 | 21 | 10 | 8 | 123 | 112 | 50 | 0.64102 |
1 | 9 | 25 | "Oilers d'Edmonton" | 38 | 21 | 13 | 4 | 135 | 115 | 46 | 0.60526 |
2 | 8 | 27 | 'Avalanche du Colorado' | 39 | 23 | 15 | 1 | 136 | 143 | 47 | 0.60256 |
3 | 5 | 35 | 'Jets de Winnipeg' | 39 | 23 | 15 | 1 | 127 | 109 | 47 | 0.60256 |
4 | 13 | 31 | 'Lightning de Tampa Bay' | 38 | 22 | 15 | 1 | 138 | 131 | 45 | 0.5921 |
5 | 11 | 34 | 'Predators de Nashville' | 39 | 22 | 15 | 2 | 123 | 119 | 46 | 0.58974 |
6 | 4 | 33 | 'Panthers de la Floride' | 38 | 21 | 15 | 2 | 122 | 99 | 44 | 0.57894 |
7 | 14 | 38 | 'Golden Knights de Vegas' | 38 | 19 | 13 | 6 | 118 | 110 | 44 | 0.57894 |
8 | 18 | 24 | 'Capitals de Washington' | 40 | 19 | 15 | 6 | 106 | 113 | 44 | 0.55 |
9 | 21 | 16 | 'Flyers de Philadelphie' | 39 | 19 | 16 | 4 | 109 | 122 | 42 | 0.53846 |
10 | 24 | 21 | 'Flames de Calgary' | 39 | 18 | 17 | 4 | 123 | 126 | 40 | 0.51282 |
11 | 16 | 18 | 'Blues de St. Louis' | 39 | 18 | 18 | 3 | 111 | 119 | 39 | 0.5 |
12 | 19 | 17 | 'Penguins de Pittsburgh' | 40 | 17 | 17 | 6 | 124 | 125 | 40 | 0.5 |
13 | 23 | 23 | 'Devils du New Jersey' | 40 | 18 | 19 | 3 | 128 | 140 | 39 | 0.4875 |
14 | 15 | 22 | 'Islanders de New York' | 40 | 16 | 18 | 6 | 109 | 133 | 38 | 0.475 |
15 | 20 | 37 | 'Wild du Minnesota' | 41 | 16 | 20 | 5 | 121 | 137 | 37 | 0.45121 |
ranking | franchiseId | franchiseName | gamesPlayed | wins | losses | otLosses | goalsFor | goalsAgainst | points | pointPct | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2 | 15 | 'Stars de Dallas' | 38 | 31 | 7 | 0 | 145 | 94 | 62 | 0.81578 |
1 | 6 | 20 | 'Canucks de Vancouver' | 39 | 26 | 8 | 5 | 135 | 100 | 57 | 0.73076 |
2 | 3 | 26 | 'Hurricanes de la Caroline' | 38 | 27 | 10 | 1 | 136 | 91 | 55 | 0.72368 |
3 | 1 | 10 | 'Rangers de New York' | 38 | 26 | 9 | 3 | 140 | 109 | 55 | 0.72368 |
4 | 12 | 14 | 'Kings de Los Angeles' | 40 | 26 | 10 | 4 | 132 | 100 | 56 | 0.7 |
5 | 10 | 5 | 'Maple Leafs de Toronto' | 39 | 22 | 12 | 5 | 142 | 126 | 49 | 0.6282 |
6 | 17 | 12 | 'Red Wings de Detroit' | 40 | 20 | 15 | 5 | 131 | 138 | 45 | 0.5625 |
7 | 25 | 39 | 'Kraken de Seattle' | 39 | 18 | 14 | 7 | 120 | 109 | 43 | 0.55128 |
8 | 22 | 19 | 'Sabres de Buffalo' | 41 | 19 | 18 | 4 | 127 | 121 | 42 | 0.51219 |
9 | 27 | 28 | "Coyotes de l'Arizona" | 37 | 17 | 18 | 2 | 106 | 116 | 36 | 0.48648 |
10 | 28 | 1 | 'Canadiens de Montréal' | 39 | 16 | 18 | 5 | 108 | 129 | 37 | 0.47435 |
11 | 26 | 30 | "Sénateurs d'Ottawa" | 40 | 18 | 21 | 1 | 128 | 136 | 37 | 0.4625 |
12 | 29 | 36 | 'Blue Jackets de Columbus' | 39 | 13 | 18 | 8 | 124 | 146 | 34 | 0.43589 |
13 | 31 | 11 | 'Blackhawks de Chicago' | 38 | 12 | 22 | 4 | 93 | 147 | 28 | 0.36842 |
14 | 30 | 32 | "Ducks d'Anaheim" | 40 | 13 | 24 | 3 | 97 | 134 | 29 | 0.3625 |
15 | 32 | 29 | 'Sharks de San Jose' | 41 | 9 | 26 | 6 | 98 | 166 | 24 | 0.29268 |
Okay, je ne suis pas analyste, mais le résultat est absolument intéressant. Genre, le Canadien est pas dernier. On pourrait en jaser durant des heures, mais je vous laisse en faire votre propre idée. Cliquez sur le lien ci-dessous et dites-moi ce que vous en pensez.
En conclusion, j'espère que vous aimez l'idée, et si vous êtres bon en programmation et vous voulez changer les règles j'ai mis le code source ici 😃