最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

python - Optimizing Filtered Combinations of Combinations - Stack Overflow

programmeradmin1浏览0评论

I'm trying to create a software to help anize mixed Padel tournaments, to do so I'm creating a function that generates rounds.

The tournament will have X male players and X female players (X is even), the function should generate a round of X/2 matches, with no player playing against the same other player twice and no player playing with the same other player twice. It is possible for two players to play with and against separately though.

To do so I have created 3 dictionaries:

possibleTeammates = {}
possibleAdversariesMale = {}
possibleAdversariesFemale = {}

Each of these dictionaries has male players as keys, while values are respectively female players they haven't yet played with, male players they haven't yet played against and female players they haven't yet played against.

Considering X should never be more than 16, maaaaybe 24 if we're really pushing it, is it reasonable to create all possible to combinations of matches for a round with a reasonable enough performance so that I can apply a value to each match and choose the most balanced combination possible? If so, how? Or should I cut my losses, shuffle the list, and push through the first combination that satisfies the filters?

Here's my very simple match class:

class match:
    def __init__(self, t1Male, t1Female, t2Male, t2Female):
        self.t1Male = t1Male
        self.t1Female = t1Female
        self.t2Male = t2Male
        self.t2Female = t2Female

Thanks!

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>