Я работаю над планировщиком турнира по боулингу. Проблема в том, что некоторые из боулеров имеют частный шар для боулинга. Таким образом, боулеры с тем же номером боулинга не могут быть в одном и том же порядке.Планировщик боулинга
я могу производить словарь, как это:
dict = {1:None,2:1,3:None,4:None,5:None,6:1,7:2,8:2,9:3,10:None}
ДИКТ = {bowler_id, shared_ball} (None = не разделяет мяч)
Вот моя первая попытка, которая имеет проблемы:
from operator import itemgetter
bowlers = {1:None,2:1,3:None,4:None,5:None,6:1,7:2,8:2,9:3,10:None,11:None,12:None,13:None,14:None,15:None,16:1,17:None,18:None,19:None,20:None,21:2,22:3,23:None}
Lanes = 6
Rounds = 6
Schedule = {}
sortedlist = sorted(bowlers.items(), key=itemgetter(1), reverse=True)
for x in xrange(1,Lanes+1):
Schedule[''.join(['Lane', str(x)])] = []
while len(sortedlist) > 0:
z = zip(Schedule,sortedlist)
for i in z:
Schedule[i[0]].append((i[1][0] , i[1][1]))
sortedlist.pop(0)
print Schedule
У меня есть эти проблемы/проблемы:
Этот подход работает с противоположным e ffect: потому что я перейду по отсортированному списку, боулеры с одним и тем же мяч гарантированы в том же ходу.
Может ли кто-нибудь указать мне правильное направление?
Выход программы является:
{
'Lane6': [(9, 3), (6, 1), (10, None), (17, None)],
'Lane5': [(22, 3), (16, 1), (11, None), (18, None)],
'Lane4': [(7, 2), (1, None), (12, None), (19, None)],
'Lane3': [(8, 2), (3, None), (13, None), (20, None)],
'Lane2': [(21, 2), (4, None), (14, None), (23, None)],
'Lane1': [(2, 1), (5, None), (15, None)]
}
Каждого столбец представляет собой поворот на все дорожки. Когда вы смотрите на первый столбец, вы видите, что общие шары 3 и 2 встречаются больше, чем один раз в столбце. Это неправильно, потому что у вас не может быть двух боулеров с одним мячом за один ход.
Правильный результат будет что-то вроде:
{
'Lane6': [(10, None), (9, 3), (6, 1), (17, None)],
'Lane5': [(22, 3), (16, 1), (11, None), (18, None)],
'Lane4': [(7, 2), (1, None), (12, None), (19, None)],
'Lane3': [(3, None), (13, None), (8, 2), (20, None)],
'Lane2': [(14, None), (21, 2), (4, None), (23, None)],
'Lane1': [(2, 1), (5, None), (15, None)]
}
Порядок боулеров может быть Randon, так как долго не существует никаких общих шаров в один ход.
На самом деле, что вы хотите иметь в качестве желаемого? – Kasramvd
@ Kasra Я добавил желаемый результат в тему. –
* «порядок имеет значение ... поэтому словарь не является хорошим» * - ['collections.OrderedDict'] (https://docs.python.org/2/library/collections.html#collections.OrderedDict)? – jonrsharpe