Сторінка 6 з 10
Re: Жеребьёвка по-нашему
Додано: 09 січня 2012, 16:06
AlterEgo
Всё сделаем, всё преодолеем.

Расчётную работу надо поручать компьютеру, а человеческий мозг лучше использовать для решения творческих задач.
Да, швейцарка - это тот же Макмагон, только без стартовых очков? Или ещё какие-то особенности?
Re: Жеребьёвка по-нашему
Додано: 09 січня 2012, 17:35
Небайдужий
Ліверинов в свій час казав, що формалізувати і, відповідно, запрограмувати принципи Корсака неможливо...
Тому він і наполягав на принципах ФІДЕ і свою програму реалізовував на цих принципах. Хоча, можливо я помиляюсь. Шукати відповідні цитати на форумі немає бажання.
Принципи жеребкування можуть бути різні . Це може бути і за принципом "перший - з останнім" і так до середини, а може бути й такий варіант, коли в одному турі проводиться з найближчими (в групі і за номером в списку) зверху до низу, а в наступному турі - навпаки, найближчі, але жеребкування проводиться знизу до верху. Тут вся ізюминка в тому, кого куди зносити при непарній кількості учасників в групі. Зрозуміло, що в різних турах в такому випадку різні принципи пониження і підвищення гравців в очкових групах. Подібні принципи використовують, наприклад, китайці. Номери учасників вони, правда, розставляють не згідно рейтингу, а згідно з жеребкуванням номерів для кожного учасника, який проводиться перед турніром. До речі, такий варіант жеребкування був би корисним при проведенні форових турнірів за умови жеребкування з мінімізацією фори (при умові, що номери учасників створюються не жеребом, а згідно з рейтингом. Можна передбачити можливість присвоєння кожному учаснику стартового номера, не залежно від рейтингу, тобто, щоб був вибір, стартовий номер за рейтингом, чи за призначенням судді.
Re: Жеребьёвка по-нашему
Додано: 09 січня 2012, 18:05
AlterEgo
Ага, понятно. Сейчас, когда я заменил цикл по игрокам циклом по группам, можно без особых изменений кода реализовать различное сведение пар. До этой серьёзной переделки по мере учёта всё новых и новых требований системы код начинал утрачивать читабельность и приобретать все признаки плохой программы. К счастью, это уже в прошлом - можно сказать, головоломка сложилась, всё стало на свои места.
В ближайших планах - реализация учёта понижений/повышений и одинаковых стран/городов/клубов/типов.
После этого - программная оболочка с интерфейсом пользователя.
Re: Жеребьёвка по-нашему
Додано: 09 січня 2012, 18:21
Небайдужий
Знаєте, пане Дмитре, ваша робота над програмою жеребкування уже стала таким, можна сказати, шоу проектом для форумчан в хорошому сенсі. Всі з напруженням спостерігають процес створення програми і здається, що всі знаходяться в стані приємного очікування.
Як кажуть: "всі чекають новорічного дива".
Удачі вам в реалізації вашого, без сумніву, достойного проекту.
Re: Жеребьёвка по-нашему
Додано: 09 січня 2012, 18: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
В приєднаному файлі додаю правила ФІДЕ на російській мові.
Re: Жеребьёвка по-нашему
Додано: 09 січня 2012, 19:12
AlterEgo
Спасибо, Владимир Александрович, на добром слове!
Также благодарю за ссылки, посмотрю.
Завтра, увы, нужно идти работать - но зато впереди ещё есть старый Новый год, плюс никто не отменял вечера. Show must go on!

Re: Жеребьёвка по-нашему
Додано: 11 січня 2012, 09:02
Korsak
Сам с замиранием сердца слежу за развитием событий.
Вообще-то пока добавлять было нечего - я столько на эту тему писал раньше, что не разобраться в принципах жеребьевки "по-киевски" мог разве что только ленивый (при условии что человек поставил себе цель разобраться). Я рад что Дима смог-таки реализовать программно этот алгоритм.
Ну и по поводу подьемов и спусков.
При этой системе жеребьевки контроль подъемов и спусков в общем-то не важен. Дело в том, что в каждом туре опускаются и поднимаются именно те, кто по своему рейтингу и должен опускаться и подниматься чтобы при "правильных" результатах сохранить свое место в строю. И влияние подъемов и спусков, которые были в предыдущих турах может только нарушить этот порядок и в подъем и спуск пойдут не те люди, которые должны идти по рейтингу.
Я раньше вскользь упоминал об этом, но такое положение было достаточно революционным на то время и в своих жеребьевках я все-же по привычке учитывал подъемы и спуски, хотя это и является противоестественным для самой идеологии такой жеребьевки. Так что на этой проблеме особо заморачиваться не стоит. Там есть другие более важные проблемы связанные с объединением очковых групп в последних турах и "откатом" назад при нарушениях более высоких приоритетов в более низких очковых группах.
Ну а вообще большое спасибо за проведенную работу.
С уважением, Владимир Корсак
Re: Жеребьёвка по-нашему
Додано: 11 січня 2012, 10:54
AlterEgo
Владимир Фёдорович, благодарю за комментарий!
Насчёт объединения групп. Сейчас реализовано так:
1) если для верхнего в текущей группе не находится пара (с возможностью прожеребить оставшихся), то он переносится в нижестоящую группу;
2) если в группе никого не осталось, она удаляется, и в работу берётся нижестоящая;
3) принимаемая в работу группа пересортировывается, чтобы правильно расположить вновь добавленных членов (там может быть каша, если добавить несколько новых членов, на нашедших пары);
4) для всех туров, кроме последнего, верхняя подгруппа количественно равна нижней (сводиться могут только члены разных подгрупп);
5) в последнем туре подгрупп как таковых нет - рассматриваются все возможные варианты (иначе у меня не сходился контрольный пример).
Ограничений на количество объединений групп нет.
Если в последней оставшейся группе жеребьёвка невозможна, расформировывается последняя пара (и так - до победы).
Добавлена новая возможность: введено понятие команды. Члены одной команды между собой не играют. Судья, например, может одной командой обозначить родственников или иных лиц, которые встречаться не должны.
Таким образом, в программе сейчас два безусловных запрета:
1) повтор сведения пар;
2) сведение членов одной команды.
А поскольку, как оказалось, учёт подъёмов/спусков не существенен - ура! ура! - то можно переходить к реализации пользовательского интерфейса.
UPD. Ещё надо будет добавить расстановку форы и назначение цветов.
Re: Жеребьёвка по-нашему
Додано: 15 січня 2012, 19:50
AlterEgo
Пока я осваиваю 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
Как видно, финальная расстановка, даже если исключить неполных участников турнира, не вполне соответствует градации по рейтингу. Прошу специалистов прокомментировать - возможно, где-то в расчётах есть ошибка.
Re: Жеребьёвка по-нашему
Додано: 15 січня 2012, 20:33
AlterEgo
Кстати, если бы опоздавшие игроки были учтены и в первых турах (т. е. участвовали бы в жеребьёвке), то картина была бы несколько иной:
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.