2017 Rebirth: blitz!
This commit is contained in:
parent
bd627d8d3f
commit
b648f66a1e
32
2017/1-rebirth/randomize.py
Executable file
32
2017/1-rebirth/randomize.py
Executable 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)
|
@ -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
33
2017/1-rebirth/roundrobin.py
Executable 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
12
2017/1-rebirth/table.txt
Normal 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
30
2017/1-rebirth/tours.txt
Normal 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]
|
Loading…
Reference in New Issue
Block a user