РПЛ уже 3 дня путается в своей таблице – делает только хуже. Мы расставили по регламенту и вернули «Спартаку» 2-е место
Восстановили справедливость.
От редакции: если вы уже читали пост во вторник, у нас новости – таблица по версии РПЛ снова другая, и там только добавилось вопросов. Чтобы сэкономить вам время, мы пометили свежие детали вот таким значком -🆕- можете читать только их. Ну или насладиться всей этой чудной историей с нуля!
С каждым днем к турнирной таблице РПЛ только больше вопросов. В понедельник лига выкатила одну версию после 16 матчей, во вторник утром – другую, в среду вечером – третью.
Основные изменения – в группе команд, у кого по четыре очка: РПЛ подняла «Динамо» на второе место во вторник и сохранила там к среде.
🆕 Путаница еще и с тройкой «Крылья»-«Сочи»-«Оренбург», у которых по три очка – их положение сначала соответствовало регламенту, осталось правильным во вторник, но внезапно изменилось в среду.
РПЛ пошутила сама над собой: во вторник запостила ролик, где Человек-Паук при появлении суперспособностей вдруг через очки видит что-то мутное (таблицу из понедельника), а без них – четко (новую).
🆕 В среду новую таблицу опубликовали с мемом от Агента Джея из «Людей в черном», когда он говорит «Непорядок, давай-ка забудем об этом». Проблема в том, что по его щелчку появляется таблица, в которой еще больше ошибок и несоответствий регламенту.
Присмотримся вместе с Тоби Магуайром и Уиллом Смитом.
Знаком -🤔- в таблицах выше и дальше по тексту помечены команды и расклады, к которым есть вопросы.
Самая первая версия ближе всех к регламенту. «Спартак» должен быть вторым, «Зенит» – третьим
🤔 Первая обновленная таблица сразу вызвала вопросы у «Оренбурга», который с лучшей разницей мячей оказался ниже и «Крыльев», и «Сочи» в своем мини-турнире: «Точно все подсчитали? Если подсчет такой, то мы седьмые».
Сначала показалось, что в «Оренбурге» не очень внимательно изучили регламент, но мы пригляделись – похоже, документ не очень знает сама лига.
🧐 В актуальной версии регламента прописаны вот такие критерии, чтобы определить места при равенстве очков. Для текущей и итоговой таблицы они одинаковые (иногда бывают случаи, что при определении мест в текущей таблицы не учитываются личные встречи – только в итоговой; поэтому и делаем акцент на этот момент).
С регламентом расходится пояснение РПЛ при публикации новой таблицы, там говорится: «Динамо» занимает второе место, так как при равенстве очков с «Зенитом», «Спартаком», «Химками» и «Ахматом» у него лучшая разница забитых и пропущенных мячей».
🧑⚖️ На самом деле, если следовать регламенту, для команд с равными очками нужно раскладывать виртуальный мини-турнир, чтобы понять, кто на каком месте должен находиться. Смотрим, сколько набрали в матчах друг с другом команды, у которых по четыре очка (там были матчи «Химки» – «Зенит» и «Ахмат» – «Спартак», оба завершились 1:1):
2. «Спартак» – 1 очко
3. «Зенит» – 1 очко
4. «Химки» – 1 очко
5. «Ахмат» – 1 очко
6. «Динамо» – 0 очков (ни с кем не играло)
«Динамо» набрало меньше всех очков в личных матчах, поэтому при дальнейшем определении мест оно в любом случае должно быть ниже остальной четверки. А в этой четверке все определяется по разнице мячей и количеству забитых – и дальше все в таком порядке: «Спартак» (5-2), «Зенит» (4-1), «Химки» (4-1), «Ахмат» (3-2). За счет более результативной победы в три мяча спартаковцы тут выше всех.
Кстати, уточним, почему «Зенит» при идентичных показателях над «Химками» – потому что по итогам прошлого сезона он был выше в таблице. Это тоже отдельно подчеркнуто в регламенте, когда речь идет о текущей таблице.
Лига поступила непоследовательно в идентичных ситуациях. Вот (похоже) полностью правильная таблица
🤔 Вопросы возникли и в зоне команд, набравших по три очка: «Крылья», «Оренбург» и «Сочи».
И это отдельная странность.
🆕 Тройка выглядела по регламенту правильно два дня, на третий тут появилось расхождение – когда РПЛ поставила «Оренбург» выше «Сочи». Вопросы «Оренбурга» справедливы изначально, но ни в каком варианте новичок лиги не должен был становиться восьмым.
На этот раз пояснения к изменениям нет. Можно предположить, что в первую очередь решили смотреть на общую разницу мячей как главный дополнительный показатель, но это как раз и не по регламенту.
🧐 Ключевой момент: при распределении мест в этой ситуации приоритет у мини-группы, разницу мячей тоже нужно смотреть в ней, а не общую по турниру.
Сначала регламент: «Крылья» седьмые, тут все в порядке, они обыграли «Оренбург». У оренбуржцев и «Сочи» нет очков в матчах внутри этой тройки, но так как «Оренбург» проиграл «Крыльям», а сочинцы ни с кем из двоих еще не играли, у одних разница отрицательная, у других – нулевая, и это основание ставить сочинцев выше. (Тут мы и сами сначала запутались, признаем).
7. «Крылья Советов» – 3 очка
8. «Сочи» – 0 очков (ни с кем не играл, разница в мини-группе нулевая, хоть в целом и отрицательная)
9. «Оренбург» – 0 очков (проиграл «Крыльям», разница отрицательная, хоть в целом и положительная)
🧑⚖️ Лига странно подошла к идентичным ситуациям. Регламенту соответствовала первая версия таблицы РПЛ, во второй появилась ошибка с позицией «Динамо», в третьей – добавили еще одну.
Предположим, РПЛ почему-то выкинула пункт о личных встречах для текущей таблицы – почему тогда это применили только к «Динамо», но не к «Оренбургу»? В таком варианте оренбуржцы должны быть выше и «Сочи», и «Крыльев» – просто потому, что у них лучше разница.
Это – таблица РПЛ, соответствующая регламенту.
Кстати, у нас в обновленном матч-центре Sports.ru можно найти кучу новых функций, в том числе видеть xG прямо по ходу матчей – и понять, по делу ли закончились матчи, которые теперь влияют на расстановку в таблице.
Фото: spartak.com
Это надо уметь делать и после второго, и после последнего тура 😉
1) этого не будет, готов спорить на литр Ягера
2) даже с другими командами - это очень после 30 игр
3) после 30 тура не будет ситуации, когда из трёх команд у кого-то будет меньше очков в личных встречах по причине "потому что не играла матчей с этими командами", так что по этому критерию неопределённости будет намного меньше. И на конечный результат того, как считаются личные встречи, ВООБЩЕ не влияет то, как было посчитано после 2-го тура.
Есть простая таблица, читай реляционная БД. Из неё берётся простая выборка, далее делается сортировка - сначала все сортируются по очкам, такая операция занимает миллисекунды.
Далее берутся все равные по первому пункту команды, делается запрос в другую таблицу БД с результатами матчей. Нас интересуют, в данном случае, игры 5 команд. Можно взять самый сложный алгоритм, конечно, и для эти 5 команд возможно не более 10 игр между собой за круг или 20 за чемп. По сути тут происходит достаточно простая сортировка массива, это ещё пару секунд, так как оперировать нечем особо (поверьте человеку, который работал с таблицами в 1.5 ТБ несколькими миллионами запросов в сутки).
Далее, если отсортировать массив не получилось, из неопределённых элементов создаётся новый массив, который упорядочивается по следующим данным, а именно разница и количество забитых. Далее проверяется место за прошлый сезон.
Может я сейчас привёл не самый оптимальный алгоритм, однако даже для сортировки полной турнирной таблицы, по итогам чемпа (а данных там пара мегабайт на всю БД) нужно несколько селектов, пару сортировок массивов и это в худшем случае. Даже при равенстве всех со всеми по очкам, это займёт десятки секунд как максимум. Это не просто можно делать в лайф режиме, сейчас это операции, которые запросто выполнить смартфон десятилетней давности за вполне разумное время. Системы оперируют куда более сложными выборками и сортировками (хоспади, да сделайте фильтр по задачам на jql в джира и он куда больше данных и условий обрабатывает, успевая гонять данные по сети и отрисовывать их).
Такой проект может реализовать за несколько дней с нуля почти любая студия разработки, за весьма скромный бюджет (и да, это тоже по опыту).