Жеребьёвка по-нашему

Если Вы не знаете, в какой раздел писать, то пишите сюда!
AlterEgo
Advanced Member
Сообщения: 1650
Зарегистрирован: 06 янв 2007, 15:23
Откуда: Киев

Re: Жеребьёвка по-нашему

Сообщение AlterEgo » 09 янв 2012, 17:06

Всё сделаем, всё преодолеем. :) Расчётную работу надо поручать компьютеру, а человеческий мозг лучше использовать для решения творческих задач.

Да, швейцарка - это тот же Макмагон, только без стартовых очков? Или ещё какие-то особенности?

Аватара пользователя
Небайдужий
Advanced Member
Сообщения: 4684
Зарегистрирован: 01 янв 2007, 14:26
Разряд: 6k
Откуда: м. Рівне

Re: Жеребьёвка по-нашему

Сообщение Небайдужий » 09 янв 2012, 18:35

Ліверинов в свій час казав, що формалізувати і, відповідно, запрограмувати принципи Корсака неможливо...
Тому він і наполягав на принципах ФІДЕ і свою програму реалізовував на цих принципах. Хоча, можливо я помиляюсь. Шукати відповідні цитати на форумі немає бажання.

Принципи жеребкування можуть бути різні . Це може бути і за принципом "перший - з останнім" і так до середини, а може бути й такий варіант, коли в одному турі проводиться з найближчими (в групі і за номером в списку) зверху до низу, а в наступному турі - навпаки, найближчі, але жеребкування проводиться знизу до верху. Тут вся ізюминка в тому, кого куди зносити при непарній кількості учасників в групі. Зрозуміло, що в різних турах в такому випадку різні принципи пониження і підвищення гравців в очкових групах. Подібні принципи використовують, наприклад, китайці. Номери учасників вони, правда, розставляють не згідно рейтингу, а згідно з жеребкуванням номерів для кожного учасника, який проводиться перед турніром. До речі, такий варіант жеребкування був би корисним при проведенні форових турнірів за умови жеребкування з мінімізацією фори (при умові, що номери учасників створюються не жеребом, а згідно з рейтингом. Можна передбачити можливість присвоєння кожному учаснику стартового номера, не залежно від рейтингу, тобто, щоб був вибір, стартовий номер за рейтингом, чи за призначенням судді.

AlterEgo
Advanced Member
Сообщения: 1650
Зарегистрирован: 06 янв 2007, 15:23
Откуда: Киев

Re: Жеребьёвка по-нашему

Сообщение AlterEgo » 09 янв 2012, 19:05

Ага, понятно. Сейчас, когда я заменил цикл по игрокам циклом по группам, можно без особых изменений кода реализовать различное сведение пар. До этой серьёзной переделки по мере учёта всё новых и новых требований системы код начинал утрачивать читабельность и приобретать все признаки плохой программы. К счастью, это уже в прошлом - можно сказать, головоломка сложилась, всё стало на свои места.

В ближайших планах - реализация учёта понижений/повышений и одинаковых стран/городов/клубов/типов.
После этого - программная оболочка с интерфейсом пользователя.

Аватара пользователя
Небайдужий
Advanced Member
Сообщения: 4684
Зарегистрирован: 01 янв 2007, 14:26
Разряд: 6k
Откуда: м. Рівне

Re: Жеребьёвка по-нашему

Сообщение Небайдужий » 09 янв 2012, 19:21

Знаєте, пане Дмитре, ваша робота над програмою жеребкування уже стала таким, можна сказати, шоу проектом для форумчан в хорошому сенсі. Всі з напруженням спостерігають процес створення програми і здається, що всі знаходяться в стані приємного очікування. :)
Як кажуть: "всі чекають новорічного дива".
Удачі вам в реалізації вашого, без сумніву, достойного проекту.

Аватара пользователя
Небайдужий
Advanced Member
Сообщения: 4684
Зарегистрирован: 01 янв 2007, 14:26
Разряд: 6k
Откуда: м. Рівне

Re: Жеребьёвка по-нашему

Сообщение Небайдужий » 09 янв 2012, 19:46

Можливо допоможуть розібратись надані нижче посилання.
*Ось посилання на описання швейцарської системи жеребкування в російській Вікіпедії:
http://ru.wikipedia.org/wiki/%D0%A8%D0% ... 0%BC%D0%B0
*А це правила жеребкування ФІДЕ ( в розділі про Handbook, на англійській мові):
http://www.fide.com/fide/handbook.html? ... w=category
Як бачимо і у Фіде бувають різні правила жеребкування.
*А ось програми, які створені для реалізації правил ФІДЕ:
http://immortalchess.net/forum/archive/ ... t-763.html
На мою думку, Го суттєво відрізняється від шахів наявністю комі. Тому, я думаю, що брати абсолютно шахові принципи жеребкування для Го мабуть не доцільно. Але мати в програмі опцію "за правилами ФІДЕ", мабуть, все ж доцільно. Можливо хтось хоче проводити жеребкування в своїх турнірах саме за правилами ФІДЕ. Ну ніхто ж і не забороняє. ОПЦІОНАЛЬНО.
А ось що сказано в Вікіпедії про використання системи Макмагон в Європі:
http://ru.wikipedia.org/wiki/%D0%A1%D0% ... 0%BD%D0%B0

В приєднаному файлі додаю правила ФІДЕ на російській мові.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

AlterEgo
Advanced Member
Сообщения: 1650
Зарегистрирован: 06 янв 2007, 15:23
Откуда: Киев

Re: Жеребьёвка по-нашему

Сообщение AlterEgo » 09 янв 2012, 20:12

Спасибо, Владимир Александрович, на добром слове!
Также благодарю за ссылки, посмотрю.
Завтра, увы, нужно идти работать - но зато впереди ещё есть старый Новый год, плюс никто не отменял вечера. Show must go on! ;)

Korsak
Главный судья
Сообщения: 1148
Зарегистрирован: 13 мар 2003, 11:05

Re: Жеребьёвка по-нашему

Сообщение Korsak » 11 янв 2012, 10:02

Сам с замиранием сердца слежу за развитием событий.
Вообще-то пока добавлять было нечего - я столько на эту тему писал раньше, что не разобраться в принципах жеребьевки "по-киевски" мог разве что только ленивый (при условии что человек поставил себе цель разобраться). Я рад что Дима смог-таки реализовать программно этот алгоритм.
Ну и по поводу подьемов и спусков.
При этой системе жеребьевки контроль подъемов и спусков в общем-то не важен. Дело в том, что в каждом туре опускаются и поднимаются именно те, кто по своему рейтингу и должен опускаться и подниматься чтобы при "правильных" результатах сохранить свое место в строю. И влияние подъемов и спусков, которые были в предыдущих турах может только нарушить этот порядок и в подъем и спуск пойдут не те люди, которые должны идти по рейтингу.
Я раньше вскользь упоминал об этом, но такое положение было достаточно революционным на то время и в своих жеребьевках я все-же по привычке учитывал подъемы и спуски, хотя это и является противоестественным для самой идеологии такой жеребьевки. Так что на этой проблеме особо заморачиваться не стоит. Там есть другие более важные проблемы связанные с объединением очковых групп в последних турах и "откатом" назад при нарушениях более высоких приоритетов в более низких очковых группах.

Ну а вообще большое спасибо за проведенную работу.

С уважением, Владимир Корсак

AlterEgo
Advanced Member
Сообщения: 1650
Зарегистрирован: 06 янв 2007, 15:23
Откуда: Киев

Re: Жеребьёвка по-нашему

Сообщение AlterEgo » 11 янв 2012, 11:54

Владимир Фёдорович, благодарю за комментарий!

Насчёт объединения групп. Сейчас реализовано так:
1) если для верхнего в текущей группе не находится пара (с возможностью прожеребить оставшихся), то он переносится в нижестоящую группу;
2) если в группе никого не осталось, она удаляется, и в работу берётся нижестоящая;
3) принимаемая в работу группа пересортировывается, чтобы правильно расположить вновь добавленных членов (там может быть каша, если добавить несколько новых членов, на нашедших пары);
4) для всех туров, кроме последнего, верхняя подгруппа количественно равна нижней (сводиться могут только члены разных подгрупп);
5) в последнем туре подгрупп как таковых нет - рассматриваются все возможные варианты (иначе у меня не сходился контрольный пример).

Ограничений на количество объединений групп нет.
Если в последней оставшейся группе жеребьёвка невозможна, расформировывается последняя пара (и так - до победы).

Добавлена новая возможность: введено понятие команды. Члены одной команды между собой не играют. Судья, например, может одной командой обозначить родственников или иных лиц, которые встречаться не должны.

Таким образом, в программе сейчас два безусловных запрета:
1) повтор сведения пар;
2) сведение членов одной команды.

А поскольку, как оказалось, учёт подъёмов/спусков не существенен - ура! ура! - то можно переходить к реализации пользовательского интерфейса.

UPD. Ещё надо будет добавить расстановку форы и назначение цветов.

AlterEgo
Advanced Member
Сообщения: 1650
Зарегистрирован: 06 янв 2007, 15:23
Откуда: Киев

Re: Жеребьёвка по-нашему

Сообщение AlterEgo » 15 янв 2012, 20:50

Пока я осваиваю WPF, конструируя пользовательский интерфейс, можно вернуться к первому примеру, с верхней группой из 6 человек и двумя опоздавшими игроками.

Вот как с этим справляется последний алгоритм жеребьёвки:

Pl.	Name		Rating	I	MMS	SOS	SODOS	SOSOS	SOUD
1.	Ружан. К.	700	4?	1	0	0	0	0
2.	Устен. Т.	700	5?	1	0	0	0	0
3.	Юдашк. В.	600	6?	1	0	0	0	0
4.	Петр. Н.	500	1?	1	0	0	0	0
5.	Русан. Е.	400	2?	1	0	0	0	0
6.	Устн. Н.	400	3?	1	0	0	0	0
7.	Русн. Д.	300	12?	0	0	0	0	0
8.	Васюк Ю.	200	13?	0	0	0	0	0
9.	Богт. Л.	200	14?	0	0	0	0	0
10.	Євлєв Е.	100	15?	0	0	0	0	0
11.	Верс. И.	100	½	1	0	0	0	0
12.	Кузь. М.	100	7?	0	0	0	0	0
13.	Ларін І.	0	8?	0	0	0	0	0
14.	Купр. А.	0	9?	0	0	0	0	0
15.	Ткачк К.	0	10?	0	0	0	0	0


Pl.	Name		Rating	I	II	MMS	SOS	SODOS	SOSOS	SOUD
1.	Ружан. К.	700	4+	3?	2	1	1	2	0
2.	Устен. Т.	700	5+	8↓?	2	1	1	2	-1
3.	Юдашк. В.	600	6+	1?	2	1	1	2	0
4.	Петр. Н.	500	1-	9?	1	2	0	1	0
5.	Русан. Е.	400	2-	10?	1	2	0	1	0
6.	Устн. Н.	400	3-	11?	1	2	0	1	0
7.	Русн. Д.	300	12+	14↓?	1	0	0	1	-1
8.	Васюк Ю.	200	13+	2↑?	1	0	0	1	1
9.	Богт. Л.	200	14+	4?	1	0	0	1	0
10.	Євлєв Е.	100	15+	5?	1	0	0	1	0
11.	Верс. И.	100	½	6?	1	0	0	0	0
12.	Кузь. М.	100	7-	15?	0	1	0	0	0
13.	Ларін І.	0	8-	17?	0	1	0	0	0
14.	Купр. А.	0	9-	7↑?	0	1	0	0	1
15.	Ткачк К.	0	10-	12?	0	1	0	0	0
16.	С III тура	600	--	--	0	0	0	0	0
17.	С II тура	0	--	13?	0	0	0	0	0


Pl.	Name		Rating	I	II	III	MMS	SOS	SODOS	SOSOS	SOUD
1.	Ружан. К.	700	4+	3+	2?	3	4	4	9	0
2.	Устен. Т.	700	5+	8↓+	1?	3	3	3	8	-1
3.	Юдашк. В.	600	6+	1-	7?	2	5	2	6½	0
4.	Петр. Н.	500	1-	10+	6?	2	4	1	6½	0
5.	Русан. Е.	400	2-	11+	12↓?	2	4	1	5	-1
6.	Устн. Н.	400	3-	12+	4?	2	2½	½	7	0
7.	Русн. Д.	300	13+	14↓+	3?	2	1½	1½	5	-1
8.	Васюк Ю.	200	9+	2↑-	13?	1	4	1	5	1
9.	Ларін І.	0	8-	16+	10?	1	2	1	5	0
10.	Богт. Л.	200	14+	4-	9?	1	2½	½	7	0
11.	Євлєв Е.	100	15+	5-	16↓?	1	2	0	6	-1
12.	Верс. И.	100	½	6-	5↑?	1	2	0	2½	1
13.	Кузь. М.	100	7-	15+	8?	1	2	0	3½	0
14.	Купр. А.	0	10-	7↑-	½	1	3	0	4	1
15.	Ткачк К.	0	11-	13-	17?	0	2	0	4	0
16.	С II тура	0	--	9-	11↑?	0	1	0	2	1
17.	С III тура	600	--	--	15?	0	0	0	0	0


Pl.	Name		Rating	I	II	III	IV	MMS	SOS	SODOS	SOSOS	SOUD
1.	Ружан. К.	700	4+	3+	2+	5↓?	4	9	9	25	-1
2.	Устен. Т.	700	5+	7↓+	1-	4?	3	9	5	19½	-1
3.	Юдашк. В.	600	6+	1-	8+	7↓?	3	8	4	20	-1
4.	Петр. Н.	500	1-	9+	6+	2?	3	8	4	20	0
5.	Русан. Е.	400	2-	10+	12↓+	1↑?	3	5½	2½	18½	0
6.	Устн. Н.	400	3-	12+	4-	9?	2	6½	½	21	0
7.	Васюк Ю.	200	11+	2↑-	13+	3↑?	2	5	2	18½	2
8.	Русн. Д.	300	13+	14↓+	3-	10?	2	4½	1½	16½	-1
9.	Богт. Л.	200	14+	4-	11+	6?	2	4½	1½	17	0
10.	Євлєв Е.	100	16+	5-	17↓+	8?	2	4½	1½	14½	-1
11.	Ларін І.	0	7-	17+	9-	15?	1	5	1	12½	0
12.	Верс. И.	100	½	6-	5↑-	14?	1	5	0	12	1
13.	Кузь. М.	100	8-	16+	7-	17↓?	1	4½	½	15½	-1
14.	Купр. А.	0	9-	8↑-	½	12?	1	4	0	9	1
15.	С III тура	600	--	--	16+	11?	1	½	½	6	0
16.	Ткачк К.	0	10-	13-	15-	½	1	6	0	9½	0
17.	С II тура	0	--	11-	10↑-	13↑?	0	3	0	9½	2


Pl.	Name		Rating	I	II	III	IV	V	MMS	SOS	SODOS	SOSOS	SOUD
1.	Ружан. К.	700	4+	3+	2+	5↓+	7↓?	5	14	14	52½	-2
2.	Устен. Т.	700	5+	8↓+	1-	4+	3?	4	13	8	51½	-1
3.	Юдашк. В.	600	6+	1-	7+	8↓+	2?	4	13	8	44	-1
4.	Петр. Н.	500	1-	9+	6+	2-	5?	3	14	5	45	0
5.	Русан. Е.	400	2-	10+	12↓+	1↑-	4?	3	12½	3½	41½	0
6.	Устн. Н.	400	3-	12+	4-	9+	11↓?	3	10½	3½	41	-1
7.	Русн. Д.	300	11+	16↓+	3-	10+	1↑?	3	8½	4½	34½	0
8.	Васюк Ю.	200	14+	2↑-	11+	3↑-	10?	2	11	3	42½	2
9.	Богт. Л.	200	16+	4-	14+	6-	15↓?	2	7½	1½	40½	-1
10.	Євлєв Е.	100	15+	5-	17↓+	7-	8?	2	8	2	34	-1
11.	Кузь. М.	100	7-	15+	8-	17↓+	6↑?	2	7	2	32½	0
12.	Верс. И.	100	½	6-	5↑-	16+	13?	2	6½	½	29½	1
13.	С III тура	600	--	--	15+	14+	12?	2	1½	1½	17½	0
14.	Ларін І.	0	8-	17+	9-	13-	16?	1	9½	1½	25	0
15.	Ткачк К.	0	10-	11-	13-	½	9↑?	1	8	0	16½	1
16.	Купр. А.	0	9-	7↑-	½	12-	14?	1	6½	0	22½	1
17.	С II тура	0	--	14-	10↑-	11↑-	½	1	5	0	24½	2


Pl.	Name		Rating	I	II	III	IV	V	MMS	SOS	SODOS	SOSOS	SOUD
1.	Ружан. К.	700	4+	3+	2+	6↓+	8↓+	6	19	19	95	-2
2.	Устен. Т.	700	6+	7↓+	1-	4+	3+	5	20	14	94½	-1
3.	Юдашк. В.	600	5+	1-	8+	7↓+	2-	4	21	10	83	-1
4.	Петр. Н.	500	1-	9+	5+	2-	6+	4	21	10	83	0
5.	Устн. Н.	400	3-	12+	4-	9+	13↓+	4	14½	6½	77½	-1
6.	Русан. Е.	400	2-	14+	12↓+	1↑-	4-	3	18½	3½	83½	0
7.	Васюк Ю.	200	11+	2↑-	13+	3↑-	14+	3	15	6	77	2
8.	Русн. Д.	300	13+	16↓+	3-	14+	1↑-	3	14½	4½	72½	0
9.	Богт. Л.	200	16+	4-	11+	5-	15↓+	3	11	3	70	-1
10.	С III тура	600	--	--	15+	11+	12+	3	4	4	37½	0
11.	Ларін І.	0	7-	17+	9-	10-	16+	2	13	2	45½	0
12.	Верс. И.	100	½	5-	6↑-	16+	10-	2	12½	½	46½	1
13.	Кузь. М.	100	8-	15+	7-	17↓+	5↑-	2	12	2	62	0
14.	Євлєв Е.	100	15+	6-	17↓+	8-	7-	2	11	2	66	-1
15.	Ткачк К.	0	14-	13-	10-	½	9↑-	1	12	0	38	1
16.	Купр. А.	0	9-	8↑-	½	12-	11-	1	9½	0	51	1
17.	С II тура	0	--	11-	14↑-	13↑-	½	1	6	0	36	2


Как видно, финальная расстановка, даже если исключить неполных участников турнира, не вполне соответствует градации по рейтингу. Прошу специалистов прокомментировать - возможно, где-то в расчётах есть ошибка.

AlterEgo
Advanced Member
Сообщения: 1650
Зарегистрирован: 06 янв 2007, 15:23
Откуда: Киев

Re: Жеребьёвка по-нашему

Сообщение AlterEgo » 15 янв 2012, 21:33

Кстати, если бы опоздавшие игроки были учтены и в первых турах (т. е. участвовали бы в жеребьёвке), то картина была бы несколько иной:

Pl.	Name		Rating	I	II	III	IV	V	MMS	SOS	SODOS	SOSOS	SOUD
1.	Ружан. К.	700	5+	3+	2+	8↓+	6↓+	6	18	18	96½	-2
2.	Устен. Т.	700	6+	7↓+	1-	5+	3+	5	19	13	96	-1
3.	Юдашк. В.	600	12↓+	1-	6+	7↓+	2-	4	19	8	85	-2
4.	С III тура	600	--	--	11+	9+	5+	4	7½	7½	50	0
5.	Петр. Н.	500	1-	10+	8+	2-	4-	3	23	6	70	0
6.	Русан. Е.	400	2-	9+	3-	10+	1↑-	3	21	6	80	1
7.	Русн. Д.	300	14+	2↑-	12+	3↑-	13+	3	15	6	70½	2
8.	Устн. Н.	400	13+	11+	5-	1↑-	12+	3	14½	5½	78	1
9.	Богт. Л.	200	16+	6-	14+	4-	17↓+	3	13	4	53½	-1
10.	Васюк Ю.	200	15+	5-	13+	6-	11+	3	11	5	77½	0
11.	Євлєв Е.	100	½	8-	4-	14+	10-	2	14	2	42½	0
12.	Верс. И.	100	3↑-	15+	7-	16+	8-	2	12	2	66	1
13.	Кузь. М.	100	8-	16+	10-	15+	7-	2	11	2	58	0
14.	Ларін І.	0	7-	17+	9-	11-	16+	2	9½	2	57½	0
15.	Купр. А.	0	10-	12-	17+	13-	½	2	8½	1½	40½	0
16.	Ткачк К.	0	9-	13-	½	12-	14-	1	9	0	45½	0
17.	С II тура	0	--	14-	15-	½	9↑-	1	6½	0	31	1


Напомню, для прогульщиков по каждому туру начисляется виртуальное очко, учитываемое в коэффициентах их противников, но не учитываемое в MMS.