Турнирная схема "круговик"  (Прочитано 6663 раз)

GlazAlmaz

  • сэр Макс
  • Чемпион
  • *****
  • Сообщений: 1036
  • репутация +11/-0
Турнирная схема "круговик"
: 19.11.2009 10:37
ищу алгоритм круговика на любое число участников...

т.е. нужна какая-то формула или четкий алгоритм, чтобы определить кто с кем и каким цветом играет в t-туре исходя из общего количества игроков N и порядкого номера игрока n

Xstile

  • Опытный
  • ***
  • Сообщений: 176
  • репутация +3/-0
Турнирная схема "круговик"
#1 : 26.11.2009 08:19
я узнавал - такой формулы не существует, есть только готовые сгенерированные таблицы для конечного числа игроков, в частности известная программа Swiss master содержит в себе таблицы до 1000 игроков. Но в реальности круговики с кол-вом человек более 32 не делаются из-за большой длительности таких турниров.

GlazAlmaz

  • сэр Макс
  • Чемпион
  • *****
  • Сообщений: 1036
  • репутация +11/-0
Турнирная схема "круговик"
#2 : 26.11.2009 12:51
я в инете встречал какой-то срипт, он генерирует любую сетку до 100 участников - выходит тоже что ли заранее заведены они?

Xstile

  • Опытный
  • ***
  • Сообщений: 176
  • репутация +3/-0
Турнирная схема "круговик"
#3 : 26.11.2009 15:51
да, иначе что мешало бы скрипту выдавать сетки на любое кол-во участников?

GlazAlmaz

  • сэр Макс
  • Чемпион
  • *****
  • Сообщений: 1036
  • репутация +11/-0
Турнирная схема "круговик"
#4 : 26.11.2009 16:37
мне только вот не очень понятно - как получают готовые таблицы жеребьевки? ну как вот например на 30 участников расписать, если нет формулы?! как сгенерировать эти таблицы?

Xstile

  • Опытный
  • ***
  • Сообщений: 176
  • репутация +3/-0
Турнирная схема "круговик"
#5 : 28.11.2009 11:20
Цитата: GlazAlmaz
мне только вот не очень понятно - как получают готовые таблицы жеребьевки? ну как вот например на 30 участников расписать, если нет формулы?! как сгенерировать эти таблицы?
Механизм ручной жеребьевки известен - руками и генерят, а в виде програмных циклов никто не реализовал, ибо не нужно никому. Зачем напрягаться, если круговики не бывают кол-вом более 32 человек и на такое кол-во уже есть готовые таблицы?

BOL

  • Опытный
  • ***
  • Сообщений: 55
  • репутация +4/-0
  • Мотоэкипировка. Доставка по России www.intmoto.com
Турнирная схема "круговик"
#6 : 04.01.2010 08:20
Жеребьевки в круговиках нету, там сразу готовая сетка составляется, причем всем давно известная...попробую описать:
1) Сетка составляется для КОНКРЕТНОГО числа участников (т.е. при разном количестве игроков сетка будет разная)
2) Сетка составляется сразу для НЕЧЕТНОГО И ЧЕТНОГО количества учатсников (3-4, 5-6, 7-8, 9-10 и т.д. игроков)
3) В первом туре играют крайние с крайними (N сначала против N с конца...если проще: первый сначала против первого с конца, второй сначала против второго с конца, третий сначала против третьего с конца и т.д. пока в середине не замкнутся) - образуется диагональ
 _____________
|X|1|2|3|4|5|6|
|1|X|_|_|_|_|/|
|2|_|X|_|_|/|_|
|3|_|_|X|/|_|_|
|4|_|_|/|X|_|_|
|5|_|/|_|_|X|_|
|6|/|_|_|_|_|X|

4) После образования этой диагонали мысленно отбрасываем всю левую часть и всю нижнюю, начиная с половины, как бы получится маленький треугольник. Каждая первая ячейка для каждой строки (после диагонали) служит жребием для следующего тура (чем выше строчка, тем она приоритетнее)

Перейдем к жребию на каждый тур. Рассмотрим сетку для 6 участников:

1) В 1 туре самая верхняя строчка играет с самой нижней (т.е. по жеребьевке кто вытащил 1-й номер играет с последним, в данном случае с 6-м), далее 2-й сверху играет со 2-м снизу (2-5), 3-й сверху играет с 3-м снизу (3-4).
2) 2-й тур. Смотрим на первую строчку, этот игрок играл с последним. Движемся дальше по этой горизонтальной полосе и упираемся в тупик (игрок под 6м номером как бы последний), а значит движение по турам игрока под номером 1 начнется сначала, т.е. с соперника под номером 2. Следовательно во 2-м туре он будет играть со 2-м (в следующем туре с 3-м, потом с 4-м и завершит турнир с 5-м).
Далее смотрим игрока на второй строчке и подбираем ему соперника! Как видно выше он уже играет с игроком с первой строчки.
Рассмотрим игрока на 3й строчке. В первом туре он играл с соперником под номером 4, значит в следущем туре будет играть с соперником под номером 5 (смотрим на диагональ и видем, что цифра 5 для игрока под номером 3 это как бы начало)
Соответственно игрок под номером 4 сыграет с игроком под номером 6
3) 3-й тур. Как стало известно из прошлого пункта: 1 сыграет с 3-м. Теперь смотрим игрока под номером 2. Несмотря, что в прошлом туре 2 играл с 1, но играл он это по принуждению(!), другими словами 1 играл со 2, а не наоборот. Как я уже говорил приоритет имеет игрок с высшим номером посева. Поэтому в 3-м туре игрок под номером 2 сыграет с игроком под номером 6 (это следующий по списку игрок после 5-го, с которым он сыграл в 1-м туре).
Опускаемся ниже - игрок под номером 3. Уже играет с игроком под номером 1 (написано выше).
Игроку под номером 4 соответственно достается игрок под номером 5.
4) 4-й тур. 1-й играет с 4-м.
Опускаемся ниже. 2-й уже сыграл с 5-м и 6-м и если представить мысленно тот маленький треугольник, то он его полностью закрыл (со всеми сыграл внутри), значит его соперники теперь пойдут сначала! С 1-м уже сыграл, на очереди игрок под номером 3, Значит 2-й сыграет с 3-м.
Соответственно 5й и 6-й сыграют между собой.
5) 5-й тур. Тут уже и так ясно кто с кем должен сыграть, но, можно объяснить:
1-й играет с 5-м (по порядку все идет: --> 2 --> 3 --> 4 --> 5)
2-й сыграет с 4-м (---> 3 --> 4)
3-й сыграет с 6-м (--> 5 ---> 6 и заполнит треугольник)


Цветность:
В круговике образуется другая диагональ, после зачеркивания квадратиков в матче друг с другом (1-1, 2-2, 3-3, 4-4 и т.д.)
Теперь смотрим любую пару, например 3-2. Как я уже говорил, чем выше строчка, тем она как бы приоритетнее, т.е. в данном случае мы ориентируемся по 2-й строке. Находим пересечение с игроком под номером 3 (аналогично находим пересение для 3-го игрока со вторым), ставим 2 точки и проводим линию(!) Если в этом пересение попадется черный квадрат (который мы закрасили как игру самим с собой), то высшая строчка играет черным цветом, нижняя белым! Если этот квадратн а пути не попадется, значит высшая строчка играет белым цветом. В данном случае квадрата в пересечении не было, значит пара будет составлена, как 2-3.
Теперь посмотрим на пару 4-6. Отмечаем 2 точки и проводим диагональ. В пересечении есть квадрат, значит пара будет составлена, как 6-4.



Все-таки я очень сумбурно и далеко непонятно объяснил, ну как смог :)
В общем просто возьмите любую сетку (можете побольше, например для 9-10 и 11-12 игроков) и по моему алгоритму пройдитесь...туров будет больше, но а смысл все равно останется....Это просто нужно видеть, представить...

На счет реализации не знаю, может просто вобьете, типо такого:

при 3-4 участниках:
1 тур: 1-(4), 2-3
2 тур: (4)-3, 1-2
3 тур: 2-(4), 3-1

при 5-6 участниках:
1 тур: 1-(6), 2-5, 3-4
2 тур: (6)-4, 5-3, 1-2
3 тур: 2-(6), 3-1, 4-5
4 тур: (6)-5, 1-4, 2-3
5 тур: 3-(6), 4-2, 5-1

и т.д. Если нужно могу выложить вплоть до 20 участников