На отборочных (или, другими словами, предварительных) стадиях многих соревнований по настольному теннису участники (игроки, команды) рассеиваются в несколько отборочных групп. В каждой отборочной группе каждый из её участников играет со всеми остальными участниками этой группы, а по результатам игр в предварительном этапе соревнований формируется состав участников его следующего (например, финального) этапа. ГРУППА 1 1 2 ♦ 1 2 3 ♦ 2 ♦ 3 1 ♦ 1 ♦ 2 ГРУППА 2 3 ♦ 3 Применяемый при распределении участников в группы метод рассеивания иногда, при проведении жеребьёвки вручную, может привести к случайным ошибкам и зачастую требует больше времени, чем может быть разумно выделено (особенно для сравнительно большого количества участников). Он визуально напоминает непрерывную “змейку” из участников, распределённых по силе в различные позиции различных отборочных групп. Метод змейки позволяет минимизировать случайность при распределении участников в отборочные группы, чтобы, например, избежать попадания в одну “группу смерти” нескольких потенциальных финалистов (тогда не для всех из них найдется место в следующем этапе соревнований), а в другую — несколько сравнительно слабых участников (и т.о. появления сравнительно “случайного финалиста”). ГРУППА 1 1 1 2 4 3 5 1 2 ГРУППА 2 3 ♦ ♦ ♦ 1 2 2 3 3 6 1 2 3 ♦ ♦ ♦ Перед проведением жеребьёвки змейкой участники должны быть упорядочены по силе: от сильнейшего к слабейшему (по рейтингу). Если два или более участников имеют одинаковый рейтинг необходимо предварительно, до начала жеребьёвки, для таких участников определить случайным жребием их последовательность в списке для жеребьёвки (т.е. позиции друг относительно друга). Очерёдность действий при рассеивании участников в отборочные группы. Участники с наивысшим рейтингом помещаются на первые позиции в таблицах групп, в порядке убывания их рейтинга; участник, имеющий наивысший рейтинг – в первую группу; участник, имеющий второй рейтинг – во вторую группу и т. д. до окончания количества групп. Участник, имеющий рейтинг, следующий по убыванию за участником, который был помещён на первую позицию в группу с последним порядковым номером, должен быть помещен на вторую позицию в эту же группу; участник, следующий по рейтингу, помещается на вторую позицию в предпоследнюю группу и т. д. Участник, имеющий рейтинг, следующий по убыванию за участником, который был помещён на вторую позицию в первую группу, должен быть помещен на третью позицию в эту же группу; участник, следующий по рейтингу, помещается на третью позицию во вторую группу и т. д. Рассеивание по указанному принципу проводится до тех пор, пока в списке остаются участники, имеющие рейтинг больше нуля. Участники, не имеющие рейтинга, рассеиваются в последнюю очередь случайным жребием на не занятые места в группах. Обычно в списке участников соревнований находятся участники, которые имеют потенциально общие интересы. Например, какие-то участники представляют один клуб или одну школу в городских соревнованиях; один город в областных соревнованиях; один регион во всероссийских соревнованиях; одну страну в международных соревнованиях. Таких участников будем считать представляющими одну “Ассоциацию”. Чтобы избежать любых предпосылок к сговору, таких, например, как: участник, который потерял шансы на выход из отборочной группы намеренно проигрывает игру своему одноклубнику, чтобы повысить его шансы на выход из отборочной группы — их необходимо распределить в различные отборочные группы. Дополнительное условие распределения участников в группы с учётом Ассоциации формулируется так: участники из одной Ассоциации, численностью меньшей, чем количество групп, должны быть распределены в разные группы; если при этом нарушается изложенный выше принцип распределения участников в группы по рейтингу, то такой очередной участник должен быть помещен в следующую (или предыдущую) группу, где нет участников из данной Ассоциации, но обязательно под этим же посевным номером; данное дополнительной условие является приоритетным по отношению к предыдущему порядку распределения участников в отборочные группы по рейтингу. Для понятного результата выполнения автоматической жеребьёвки в некоторых замеченных необычных ситуациях, вводится несколько дополнительных оговорок: 1. Очередной участник должен помещаться (если для него не появляются проблемы с Ассоциацией) в ближайшую к началу змейки свободную группу: для нечётных позиций — в свободную группу с наименьшим номером; для чётных позиций — в свободную группу с наибольшим номером; 2. Если потребуется искать решение перебором всех вариантов (чего не хотелось бы делать с учётом изложенного ниже) в пределах одного посева, то сначала производится замена мест с соседней следующей по ходу змейки группой; затем - с соседней предыдущей группой; затем со следующей группой через одну; затем - с предыдущей группой через одну и т. д. каждый раз удаляясь на одну группу от исходной; 3. Если для определённого участника перебор всех групп не дал удовлетворительного результата, то следует вернуться к началу переборов для этого участника; далее необходимо проанализировать возможность решения этой проблемы перестановкой участников в каждом из предыдущих посевов (кроме 1-го); участники 1го посева никогда не переставляются. Исходные данные Список участников формируется сторонней компьютерной программой в виде таблицы (пример взят из женского рейтинг-листа Феднрации настольного тенниса России на 1 декабря 2013 года): Мес то Рейт инг Фамилия Дата Ассоциа рождения ция Тренер Муравьева М.Г., Ендолов В.Н. 1 1555 Носкова Яна 02.02.1994 Н.Новго род 2 1530 Михайлова Полина 31.08.1986 С.Лешев С.Г. Петербу рг 3 1503 Сабитова Валентина 11.04.1990 Москва 4 1490 Крекина Светлана 05.08.1981 С.Семенова С.Д. Петербу рг 5 1487 Блажко Анна 02.09.1994 Москва 6 … … … … Воробьев В.А. Шевцова Ю.В. … С учетом предполагаемого использования в том числе сравнительно медлительных программ типа VBA для MS Excel, должна быть предусмотрена адекватная скорость получения конечного результата. Поэтому остальные исходные данные при необходимости могут быть ограничены следующими величинами: Максимальное количество участников Максимальное количество групп Максимальное количество позиций в группе Требуется: Составить алгоритм жеребьёвки указанных выше условиях. методом 128 или 256 32 или 64 8 “змейки” на