[{{mminutes}}:{{sseconds}}] X
Пользователь приглашает вас присоединиться к открытой игре игре с друзьями .
Ctrl предыдущая следующая Ctrl Страницы
1 2 3 4 5 6 7

Форум «Общий» / Создание универсального парсера для соревнований

AvtandiLine Сообщение #122 23 февраля 2014 в 03:16
Кибергонщик
61
nosferatum писал(а):
В принципе, могу сделать две отдельных ссылки для xls и xlsx. Либо же исключительно в старом формате выгружать.

Копированием через буфер переброска, хотя и с лишними хлопотами, но тоже выполняется, так что проблема не_сильно критичная. Но оптимально было бы (мне) в старом формате, за других не_знаю, как кому.
nosferatum Сообщение #123 23 февраля 2014 в 03:22
Супермен
37
Копированием через буфер переброска, хотя и с лишними хлопотами, но тоже выполняется, так что проблема не_сильно критичная. Но оптимально было бы (мне) в старом формате, за других не_знаю, как кому.


Думаю, что логичней всего выгружать строго в старом формате — он откроется и у обладателей новой, и старой версий Экселя. Обратное же неверно.
MMMAAANNN Сообщение #124 23 февраля 2014 в 03:24
Супермен
36
nosferatum писал(а):
встроить в обработчик конца сессии игры скрипт сохранения данных. Чудо-скрипт у нас уже фактически есть.

Я подобное предлагал сделать отдельной фичей клавогонок, да только мало кто поддержал (больше критиковали почему-то, мол зачем и кому оно такое надо). Если бы данные всех заездов некоторое время хранились на сервере и были доступны через какое-нибудь API по id заезда - это решило бы много проблем, в том числе с необходимостью дожидаться всех, чтобы посмотреть результаты заезда позже.
Последний раз отредактировано 23 февраля 2014 в 03:26 пользователем MMMAAANNN
nosferatum Сообщение #125 23 февраля 2014 в 03:29
Супермен
37
через какое-нибудь API по id заезда

gameId в текущем движке клавогонок неуникален, с чем мы уже столкнулись — JSON-файлы от предыдущих версий скрипта voidmain могли называться по-одинаковому для разных игр. Идентифицировать игру нужно по другому признаку — например, (id + время начала).

Я подобное предлагал сделать отдельной фичей клавогонок, да что-то никто особо не поддержал (только критиковали почему-то, мол зачем и кому оно такое надо).

Да, я видел ту тему. Нужно горячо агитировать в подобные запросы народ, а именно организаторов соревнований и участников этой темы.
Последний раз отредактировано 23 февраля 2014 в 03:34 пользователем nosferatum
Lakira Сообщение #126 23 февраля 2014 в 08:12
Супермен
56
nosferatum писал(а):
В суммарной таблице в том виде, как она сейчас, имхо, логичней по заездам. Можно сделать отдельные таблицы по каждому параметру, если это нужно.
Пусть остаются по заездам. Отдельные таблицы, наверное, не надо. Тем более, если с фильтрами можно будет выбирать только нужное.

nosferatum писал(а):
Информация по отдельным заездам и местам есть на странице заезда (раскрыть «Результаты игроков (включая гостей)»). Стоит в сводную таблицу для каждого заезда добавить еще и место игрока в заезде?
По отдельным заездам информация, конечно, есть. Но сводная+экспорт пригодится на тот случай, если хочется "самостоятельно поэкспериментировать" с подсчётами результатов (так сказать, сверх того, что будет доступно в разделе "Обработка результатов"), так что лучше бы там свести воедино и выдать сразу всю доступную "исходную" информацию в удобном табличном виде.
AvtandiLine Сообщение #127 23 февраля 2014 в 14:00
Кибергонщик
61
Lakira писал(а):

ППКС.

Становится всё лучше и лучше и лучше. ^^)
nosferatum Сообщение #128 24 февраля 2014 в 23:16
Супермен
37
Обобщая идеи Лакиры в аспекте учета лучших/худших результатов, представляю такую модель учета результатов по словарю.

Пусть
T (total) — общее количество заездов по словарю в соревновании
Q (qualified) — число заездов по словарю в соревновании, которое необходимо проехать игроку для попадания в зачет
WEC (worst exclude count) — максимальное число худших результатов заездов, исключаемых для игрока из заездов по словарю
BEC (best exclude count) — максимальное число лучших результатов заездов, исключаемых для игрока из заездов по словарю
PRT (player's rounds total) — количество заездов по словарю, которые проехал игрок (в которых он финишировал и попал в лимит по скорости/ошибкам)

Все значения, естественно, целые и >= 0.
Тогда верно:
1) Q <= T
2) PRT <= T
3) Если PRT < Q хотя бы в одном словаре соревнования, то игрок не в зачете в соревновании.
4) Если PRT >= Q во всех словарях соревнования, то игрок в зачете в соревновании.
5) Если PRT = Q, то никакие заезды игрока по словарю не исключаются.
6) Если BEC = 0, WEC <= (PRT - Q), то для игрока исключаются WEC худших заездов.
7) Если BEC = 0, WEC > (PRT - Q), то для игрока исключаются (PRT - Q) худших заездов.
8) Если WEC = 0, BEC <= (PRT - Q), то для игрока исключаются BEC лучших заездов.
9) Если WEC = 0, BEC > (PRT - Q), то для игрока исключаются (PRT - Q) лучших заездов.
10) Если (WEC + BEC) <= (PRT - Q), то для игрока исключаются WEC худших и BEC лучших заездов.
11) Если WEC > 0, BEC > 0, PRT > Q, (WEC + BEC) > (PRT - Q), то возникает неоднозначность того, какие заезды игрока исключать.
12) BEC = 0, WEC = (T - 1), Q = 1 — это вырожденный случай «учитываем только лучший результат по словарю» (как в «Мире гонщиков», и, вроде бы, было в «No limits»).

Пункты 3 и 4 — это два тождественных по де Моргану утверждения.

Пункты 5, 6, 7, 8, 9 — это частные случаи общего случая 10 для обнуленных WEC либо BEC либо (PRT - Q)

Существует ли в каком-нибудь необходимость соревновании убирать из подсчетов один или несколько лучших результатов (неважно, по конкретному словарю или по соревнованию целиком)?

Про пункт 11 простыми словами:
Как быть, когда нужно исключать и лучшие, и худшие заезды, а заездов у игрока на это не хватает (с учетом попадания в зачет, естественно)?
Примитивный пример: T = 5, Q = 3, PRT = 4, WEC >= 1, BEC >= 1. Какой заезд исключать у игрока — лучший или худший? :)

Для краткости введем также следующие обозначения:
значение со штрихом ' — это значение по всему соревнованию в целом. Например, T' — это общее число заездов в соревновании.
значение с числовым индексом — это значение по i-тому словарю в соревновании. Например, Q1 — это количество заездов по 1 словарю, необходимых для попадания в зачет.
DC (dictionaries count) — количество различных словарей в соревновании.

Примеры значений для знакомых мне соревнований (в которых такая модель однозначно применима):
скрытый текст…
Последний раз отредактировано 25 февраля 2014 в 02:07 пользователем nosferatum
Lakira Сообщение #129 25 февраля 2014 в 08:44
Супермен
56
Что-то тут получилось, что исключение худших и исключение лучших заездов слилось в одну кучу. :)

Дальше везде буду говорить на примере расчёта средней скорости, но может быть любой другой итоговый показатель в зачёте.

Во-первых,
одна из задач, для решения которой стали применять исключение худших результатов (которое по сути искажает "реальный" показатель игрока по его PRT заездам) – сделать "невыгодными" недоезды.
Пример: T=10, Q=8, убирается максимум два худших заезда:
PRT1=10 – уберётся два заезда, игроку выгодно доехать всё, использовать все попытки повысить среднюю скорость.
PRT2=9 – уберётся только один худший заезд, один недоезд "украдёт" попытку улучшить свой результат.
PRT3=8 – ничего не убирается, игрок упустил две попытки повысить свой результат.

Но если в той же ситуации (T=10, Q=8) также считать исключение двух лучших результатов, то получится, что опять станут выгодными "тактические недоезды":
PRT1=10 – уберётся два лучших результата, в зачёте остались все "провальные" попытки.
PRT2=9 – убирается один лучший результат, игрок не доехал один лузер-текст и в "награду" получил, что и "вероятно худший" результат по лузер-тексту не попал в расчёт, и один из двух лучших результатов никуда не убрался.
PRT3=8 – игрок не доехал два неудачных текста, а в зачёте оказались все его лучшие результаты.


Во-вторых,
(как раз в ответ на вопрос, зачем может понадобиться убирать лучшие результаты) другая задача, решаемая исключением заездов, – "сгладить" случайные провалы и взлёты, и сравнивать результаты соревнующихся по чуть более объективному показателю.
Пример:
скрытый текст…


Таким образом, мне исключение заездов видится так:
- необязательно, что "Если PRT = Q, то никакие заезды игрока по словарю не исключаются" (в рамках Q могут быть исключены как лучшие, так и худшие результаты),
- если уж делать исключение лучших заездов, то исключать их всегда, независимо от наличия допустимых для зачёта недоездов,
- недоезды "автоматически" приравниваются к худшим заездам, т.е. если недоездов >= WEC, то ничего не исключается, а если меньше, то исключаются заезды только в той мере, в какой WEC превышает количество недоездов.


Пусть
T (total) — общее количество заездов по словарю в соревновании
Q (qualified) — число заездов по словарю в соревновании, которое необходимо проехать игроку для попадания в зачет
WEC (worst exclude count) — максимальное число худших результатов заездов, исключаемых для игрока из заездов по словарю
WREC (worst really exclude count) – реально исключаемое для конкретного игрока число худших заездов по словарю
BEC (best exclude count) — число лучших результатов заездов, исключаемых для игрока из заездов по словарю
PRT (player's rounds total) — количество заездов по словарю, которые проехал игрок (в которых он финишировал и попал в лимит по скорости/ошибкам)

Получается:
1) заездов для попадания в зачёт не может быть больше, чем заездов всего
Q <= T
2) игрок не может проехать больше, чем было заездов
PRT <= T
3) для попадания в зачёт игрок во всех режимах/словарях должен проехать установленный минимум заездов
PRT >= Q
4) в правилах соревнования не следует устанавливать возможности исключения результатов вообще всех заездов :D
Q>WEC+BEC
4) лучшие заезды могут исключаться и из числа минимально нужных для зачёта, но хоть один заезд в итоге должен остаться
BEC<Q
5) худшие заезды исключаются, только если у игрока количество недоездов меньше максимального числа заездов, установленного для исключения
(T-PRT)<WEC
Т.е. исключаются
WREC=WEC-(T-PRT)
nosferatum Сообщение #130 25 февраля 2014 в 11:54
Супермен
37
Спасибо. В целом понял, что:
1) лучшие заезды всегда исключаются из PRT, вне зависимости от количества недоездов (T - PRT).

2) исключение худших результатов идет, как я написал, но может быть (PRT - WREC) < Q — худшие заезды исключатся так, что общее количество заездов в расчете (неисключенных) будет меньше, чем нужно для зачета.

Было ли какое-то соревнование, где исключались лучшие результаты? Пока я не нашел таких, и ветка исключения лучших заездов мне не кажется приоритетной по реализации. А вот исключение худших есть в порядочном числе соревнований.
Phemmer Сообщение #131 25 февраля 2014 в 12:40
Супермен
71
nosferatum,
Модель хорошая, всё логично.
Касательно исключения лучших результатов, сейчас таких соревнований нет, да и не было вроде никогда. Хотя задумка промелькала - сделать соревнование на стабильность результатов, отсутствие провальных результатов, например, проехать 10-15 заездов и сравнивать по 3-5 худшим заездам, таким образом лучшие 7-10 отбросятся. И разрешить один недоезд, приравниваемый к худшему результату - тогда отсеивается и один худший. Но я согласен что этот алгоритм не есть приоритетным по реализации.
А такого чтобы T = 5, Q = 3, PRT = 4, WEC >= 1, BEC >= 1 я не вижу в этом реального применения.
Еще на что бы я хотел обратить внимание - на подсчет итогового показателя. Например итоговая скорость в соревновании, состоящим из нескольких режимов может рассчитываться:
1) как среднее арифметическое всех заездов по всем режимам в количестве PRT' (пример - соревнование "ЭХ", или БГ (частный случай - всего один режим))
2) вычисляется сначала средние по каждому из режимов, затем вычисляется среднее из этих средних. (пример - StreetRacer. там получается в случае 15-ти (5+5+5) из 18-ти (6+6+6) заездов то же самое что и по пункту 1, но игроки, которые не попали в зачет и пишутся в конце таблицы вычисляются именно по среднему из средних по режимам. Но если бы заездов в режимах было не равное количество, тогда было бы иначе, и такой способ расчета итоговой скорости тоже нужен.
3) каждый режим имеет свой вес. Пример - Кювет. 1-й режим (буквы) имеют вес 0,5, второй и третий режимы имеют вес по 0,25 для расчета итоговой средней из средних. Получается такая формула: 0,5 * A + 0,25 * B + 0,25 * C, где A, B, C - средние скорости по 1, 2, 3 режиму соответственно.

Что бы еще хотелось - настраивать экспорт готовых таблиц в эксель: выбрать колонки, выбрать ширины колонок. Настроить один раз ширины колонок, чтобы их потом не ровнять, чтобы не выйти за 900 пикселей по ширине, изображения больше которых форум сжимает.

Еще следует учесть что режимы могут идти не подряд. Пример - Русский Универсал и Октатлон - безошибочный один в начале и один в конце - но они равнозначные. По безошибочному: T=2, Q=0, WEC=1.
Последний раз отредактировано 25 февраля 2014 в 20:16 пользователем Phemmer
nosferatum Сообщение #132 25 февраля 2014 в 13:16
Супермен
37
Phemmer,

Про различные варианты подсчета средней согласен.
Меня всегда интересовало, считаются ли скорости «сплошной средней» (все заезды по всем словарям равнозначны) или «средней по свертке» (все словари равнозначны, вне зависимости от числа заездов по ним).

Пока (для многословарных словарей) в подсчетах везде встречалась только «сплошная средняя» (ЭХЪ, Орден суперменов). Есть ли пример соревнования со «средней по свертке» (твой пункт 2)? Street racer не подходит, насколько я понимаю, поскольку там одинаковое число заездов в каждом словаре.
Phemmer Сообщение #133 25 февраля 2014 в 13:30
Супермен
71
nosferatum писал(а):
Есть ли пример соревнования со «средней по свертке» (твой пункт 2)? Street racer не подходит, насколько я понимаю, поскольку там одинаковое число заездов в каждом словаре.

Из существующих явных примеров нет. Но в том же Street Racer если вдруг один заезд не сохранится у ведущего, тогда согласно традиции нужно будет считать среднюю по каждому и среднюю из средних и это уже не будет равно вычислению по средней из всех (по первому пункту). тогда для одного из режимов будет T=5, Q=4, WEC=1, а для других режимов T=6, Q=5, WEC=1.
Но в будущем могут быть соревнования с не равным количеством заездов по режимам, но с равным весом каждого режима.
Phemmer Сообщение #134 5 марта 2014 в 22:29
Супермен
71
Пример соревнования, в котором убираются как худшие, так и лучшие заезды.
T=12, Q=10, WEC=2, BEC=7
Phemmer Сообщение #135 6 марта 2014 в 22:24
Супермен
71
nosferatum,
а можешь ли пока сделать хотя бы таблицы по парсеру БГ, по простой скорости и ошибкам? Зачем это нужно: ну во первых это самый простой зачет. Пока еще нет других соревнований, результаты любого соревнования сейчас можно приблизительно оценить по зачету БГ. И некоторые соревнования тоже используют систему БГ.

Чтобы писать в форуме, нужно зарегистрироваться.

Ctrl предыдущая следующая Ctrl Страницы
1 2 3 4 5 6 7

Связаться
Выделить
Выделите фрагменты страницы, относящиеся к вашему сообщению
Скрыть сведения
Скрыть всю личную информацию
Отмена