2017 Rebirth: blitz!

This commit is contained in:
Vladimir Khodakov 2017-05-12 06:59:53 +04:00
parent bd627d8d3f
commit b648f66a1e
5 changed files with 118 additions and 13 deletions

32
2017/1-rebirth/randomize.py Executable file
View File

@ -0,0 +1,32 @@
#!/usr/local/bin/python2
# -*- coding: utf-8 -*-
import random, time
def write_user(username, table_size):
repeater = False
random_seed = random.choice(range(1, table_size))
tfile = open('table.txt', 'r+a')
tabledata = tfile.readlines()
for line in tabledata:
if line.split(' | ')[0] == str(random_seed):
# repeat from begin
repeater = True
write_user(username, table_size)
# if we haven't matching number, write das line
if repeater == False:
tfile.write("%i | %s\n" % (random_seed, username))
def check_file(username, table_size):
try:
tablefile = open('table.txt', 'r')
write_user(username, table_size)
except IOError:
tablefile = open('table.txt', 'w')
tablefile.write("Жеребьевка участников LORChess.\nРазмер таблицы участников: %s.\nДанный файл является неизменяемым и создаваемым один раз.\nUNIX timestamp: %i\n========\n\n" % (table_size - 1, int(time.time())))
tablefile.close()
write_user(username, table_size)
nickname = raw_input("Введите имя игрока: ")
check_file(nickname, 7)

View File

@ -4,27 +4,25 @@
### Регламент турнира
1. Количество участников — по результатам регистрации.
1. Количество участников — 6.
2. К регистрации допускается любой зарегистрированный пользователь linux.org.ru, кроме тех, кто указан в [«чёрном списке»](https://github.com/fat0troll/lorchess/blob/master/black_list.md). Решение о помещении или исключении игрока из «чёрного списка» принимают организаторы турнира.
3. Участники распределяются в изначальной таблице случайным образом в день начала турнира.
4. Турнир проводится по круговой системе в два круга (количество туров будет определено после регистрации):
* За одну неделю играются два тура (с разными противниками).
* Участники, проживающие в часовом поясе, отличном от московского, могут в течение недели сыграть два тура с одним и тем же участником (любым из двух, выпавших на неделю), по договоренности.
* За одну неделю может быть сыграно не более двух партий каждым участником.
* Каждый тур начинается в 22 часа четверга, в который объявляются пары на данный тур. Каждый тур заканчивается в 22 часа четверга, следующего после объявления начала тура. Таким образом, тур играется одну неделю.
5. Для обеспечения адекватной активности участников турнира, и ограничения задержек, используется "таймер vonavi":
3. Для действующих участников «чёрного списка» на время данного турнира действует амнистия: они допускаются к турниру с условием, указанным в пункте 6. Участник «чёрного списка», успешно завершивший данный турнир, из него исключается.
4. Участники распределяются в изначальной таблице случайным образом в день начала турнира.
5. Турнир проводится в пять туров. За две недели играются все пять туров. Порядок отыгрыша туров определяется участниками по договорённости.
6. Для обеспечения адекватной активности участников турнира, и ограничения задержек, используется "таймер vonavi":
* Каждому игроку в начале турнира даётся 14 дней "турнирного времени". Значение счётчика не может превышать эту цифру в течение турнира.
* Если игрок не проявляет игровой активности в течение недели (двух туров), включается обратный отсчёт: каждый последующий день без игровой активности отнимает от счётчика 1 день.
* Если игрок во время работы обратного отсчёта проявляет игровую активность, ему добавляется по 3.5 дня за каждый сыгранный тур (из расчёта 2 тура = 1 неделя).
* Если счётчик игрока принимает отрицательное значение, он покидает турнир.
5. Регламент тура:
* Для участников, ранее состоявших в «чёрном списке» изначальный таймер составляет 7 дней.
7. Регламент тура:
* Для игр используется сервер http://lichess.org. Игроки заранее договариваются о времени игры.
* За 15 минут до начала игры на ЛОРе в соответствующей теме объявляется номер тура, соперники и ссылка на матч. Крайне желательно, чтобы сообщение было ответом на сообщение с объявлением тура (таким образом, владельцы плагинов типа LorTreeStyle смогут в дереве увидеть все объявления партий заданного тура в одной ветке).
* За 5 минут до начала игры в Jabber-конференцию chess@conference.lorchess.ru участники скидывают ссылку на партию для того, чтобы зрители могли живьём наблюдать её и обсуждать. Данный пункт может быть дополнен Telegram-конференцией, если будут желающие её использовать.
* Контроль времени — часы Фишера: 10 минут на игру, +5 секунд на ход. Игра на рейтинг. Белыми играет игрок, указанный в объявлении тура первым.
* Контроль времени — часы Фишера: 10 минут на игру, +5 секунд на ход. Игра на рейтинг. Играются две партии, со сменой цветов. Белыми играет в первой партии участник, указанный первым.
* Если в этот день уже игрались партии LORChess, и после завершения последней партии прошло менее получаса, новую партию можно начинать сразу после объявления на ЛОРе и в конференции (не ожидая 15 минут).
* Запрещается использование во время партии компьютерных программ, печатных и электронных справочников (в том числе, информации сайта lorchess.ru), подсказок со стороны других участников турнира и прочих методов нечестной игры. В случае, если зафиксировано данное нарушение, партия должна выноситься на обзор участников турнира с принятием решения о публичной переигровке, засчитывании поражения провинившемуся или (в случае рецидивов) исключению из турнира без права возвращения в шахматные турниры LOR в дальнейшем.
6. Призовой фонд:
8. Призовой фонд:
* Призовой фонд турнира составляет 30 долларов США.
* Каждый пользователь linux.org.ru может пожертвовать деньги на пополнение призового фонда. Реквизиты пополнения — в профиле пользователя DoctorSinus.
* Призы:
@ -33,9 +31,9 @@
* 3-е место: 20% призового фонда (на данный момент — 6 долларов США).
* Призы выплачиваются из призового фонда (который, таким образом, опустошается). Выплата призов производится пользователем DoctorSinus по договорённости с участником турнира любым удобным обеим сторонам способом.
* Курс доллара по данным ЦБ РФ на момент написания регламента составляет 57 рублей 09 копеек. Если на момент окончания турнира рубль укрепится по отношению к доллару США, выигрыш будет выплачен исходя из этого курса. В противном случае выигрыш будет выплачен исходя из курса на дату последней сыгранной партии турнира.
7. Порядок распределения мест:
9. Порядок распределения мест:
* Выигрывает игрок, набравший максимальное количество очков.
* Если у каких-либо игроков по окончанию турнира сумма очков равна, то для распределения мест смотрят следующие показатели:
* коэффициент Бергера;
* результат личных встреч;
8. Ответственные за исполнение регламента, организаторы турнира: iVS, DoctorSinus.
10. Ответственные за исполнение регламента, организаторы турнира: iVS, DoctorSinus.

33
2017/1-rebirth/roundrobin.py Executable file
View File

@ -0,0 +1,33 @@
#!/usr/local/bin/python2
# -*- coding: utf-8 -*-
def roundRobin(units, sets=None):
""" Generates a schedule of "fair" pairings from a list of units """
if len(units) % 2:
units.append(None)
count = len(units)
sets = sets or (count - 1)
half = count / 2
schedule = []
for turn in range(sets):
pairings = []
for i in range(half):
pairings.append((units[i], units[count-i-1]))
units.insert(1, units.pop())
schedule.append(pairings)
return schedule
# LOR sheduler
players = ["aptyp", "J", "DoctorSinus", "redgremlin", "LongLiveUbuntu", "cetjs2"]
tour_count = 0
# Generate LORCODE for pairings.
# Also generate "reversal" for autumm season.
for pairings in roundRobin(players):
tours = (len(players) - 1) * 2
tour_count = tour_count + 1
print "[b]Тур" + str(tour_count) + "[/b]"
print "[list]"
for pair in pairings:
print "[*][user]" + pair[0] + "[/user] играет против [user]" + pair[1] + "[/user]"
print "[/list]"

12
2017/1-rebirth/table.txt Normal file
View File

@ -0,0 +1,12 @@
Жеребьевка участников LORChess.
Размер таблицы участников: 6.
Данный файл является неизменяемым и создаваемым один раз.
UNIX timestamp: 1494557094
========
3 | aptyp
2 | J
1 | DoctorSinus
4 | redgremlin
5 | LongLiveUbuntu
6 | cetjs2

30
2017/1-rebirth/tours.txt Normal file
View File

@ -0,0 +1,30 @@
[b]Тур №1[/b]
[list]
[*][user]aptyp[/user] играет против [user]cetjs2[/user]
[*][user]J[/user] играет против [user]LongLiveUbuntu[/user]
[*][user]DoctorSinus[/user] играет против [user]redgremlin[/user]
[/list]
[b]Тур №2[/b]
[list]
[*][user]aptyp[/user] играет против [user]LongLiveUbuntu[/user]
[*][user]cetjs2[/user] играет против [user]redgremlin[/user]
[*][user]J[/user] играет против [user]DoctorSinus[/user]
[/list]
[b]Тур №3[/b]
[list]
[*][user]aptyp[/user] играет против [user]redgremlin[/user]
[*][user]LongLiveUbuntu[/user] играет против [user]DoctorSinus[/user]
[*][user]cetjs2[/user] играет против [user]J[/user]
[/list]
[b]Тур №4[/b]
[list]
[*][user]aptyp[/user] играет против [user]DoctorSinus[/user]
[*][user]redgremlin[/user] играет против [user]J[/user]
[*][user]LongLiveUbuntu[/user] играет против [user]cetjs2[/user]
[/list]
[b]Тур №5[/b]
[list]
[*][user]aptyp[/user] играет против [user]J[/user]
[*][user]DoctorSinus[/user] играет против [user]cetjs2[/user]
[*][user]redgremlin[/user] играет против [user]LongLiveUbuntu[/user]
[/list]