Вы организуете турнир по round-robin схеме. Каждая команда играет с каждой. Победа одной игре дает 2 очка, ничья — 1 очко. После некоторого количества игр вы хотите узнать, кто находится на каком месте в турнирной таблице. Для упорядочивания команд используются следующие критерии (в порядке важности):
Если у двух команд одинаковое количество очков, то мы сравниваем их по разнице голов. Если одинаковая разница, то по количеству забитых голов. Если все три критерия одинаковые — команды делят общее место. Например, если играет 4 команды, а лучшие две по всем критериям равны, то будет да первых места, одно третье и одно четвертое.
[TeamA, TeamB, GoalA, GoalB]
(команда TeamA играла с командой TeamB, TeamA забила GoalA, TeamB забила GoalB голов).Предположим, играет 6 команд.
const number = 6; const games = [ [0, 5, 2, 2], // Team 0 - Team 5 => 2:2 [1, 4, 0, 2], // Team 1 - Team 4 => 0:2 [2, 3, 1, 2], // Team 2 - Team 3 => 1:2 [1, 5, 2, 2], // Team 1 - Team 5 => 2:2 [2, 0, 1, 1], // Team 2 - Team 0 => 1:1 [3, 4, 1, 1], // Team 3 - Team 4 => 1:1 [2, 5, 0, 2], // Team 2 - Team 5 => 0:2 [3, 1, 1, 1], // Team 3 - Team 1 => 1:1 [4, 0, 2, 0], // Team 4 - Team 0 => 2:0 ];
Тогда итоговая таблица будет выглядеть так:
┌──────┬───────┬──────┬───────┬──────┐ │ team │ score │ diff │ goals │ rank │ ├──────┼───────┼──────┼───────┼──────┤ │ 4 │ 5 │ 4 │ 5 │ 1 │ │ 5 │ 4 │ 2 │ 6 │ 2 │ │ 3 │ 4 │ 1 │ 4 │ 3 │ │ 0 │ 2 │ -2 │ 3 │ 4 │ │ 1 │ 2 │ -2 │ 3 │ 4 │ │ 2 │ 1 │ -3 │ 2 │ 6 │ └──────┴───────┴──────┴───────┴──────┘ const ranks = [4, 4, 6, 3, 1, 2] // teams → 0 1 2 3 4 5