提问者:小点点

足球联赛调度算法(同步。


我正在制作一个自动足球联赛生成器,但卡在了时间表上。我有一个生成一切的算法,但没有时间表。看看:

[tour-id] => Array
    (
        [playing-day] => 2013-03-07
        [tour (tour-id+1)] => 9
        [game-id] => Array
            (
                [blue team-id] => 13
                [red team-id] => 10
            )

例如:

[8] => Array
    (
        [playday] => 2013-03-07
        [tour] => 9
        [0] => Array
            (
                [blue] => 13
                [red] => 10
            )

        [1] => Array
            (
                [red] => 15
                [blue] => 12
            )

        [2] => Array
            (
                [blue] => 6
                [red] => 11
            )

现在,当我得到所有这些数据时,我可以使用一些foreach()来获取我需要的东西。但是-我想要的是将团队放入RED

我的意思是:

  • 一方一队(蓝色或红色)最多可打2次;
  • 一个回合中的一个队必须在一个回合中玩$总计图尔/2游戏。

例如,如果有9支球队,在第一轮中,一支球队必须以红色进行4次巡回赛(总计,不连续),以蓝色进行5次巡回赛。在第二轮中,它必须以红色进行5次巡回赛,以蓝色进行4次巡回赛。

即使有100个团队,算法也必须奏效。


共2个答案

匿名用户

为了建立一套固定装置,你需要每支球队精确地互相比赛一次。

一个体面的方法是围绕单个固定元素“旋转”元素。

修复数字1,我们需要

第一回合是

 1 2 3 4 5 
 v v v v v
10 9 8 7 6

第二回合将是

 1 10 2 3 4
 v  v v v v 
 9  8 7 6 5

第三轮将是

 1 9 10 2 3
 v v  v v v 
 8 7  6 5 4

以此类推,直到数字一直旋转。

我使用这种方法在JavaScript中构建了一组夹具:https://jsfiddle.net/jonwinstanley/9dfLm8nq/97/

匿名用户

我认为你应该检查循环锦标赛-算法。通过这种方式,您可以轻松安排您的锦标赛,并且地点将成为可选的。当到达时间时,您可以将位置homeaway