帮助在PHP中实现瑞士配对算法

时间:2011-06-15 22:44:52

标签: php arrays

所有

瑞士配对算法中的一个步骤需要创建具有相同分数的玩家组。

E.x.
 P1 - 3
 P2 - 3
 P3 - 2
 P4 - 1
 P5 - 1
 P6 - 1

所以这应该创建3组,即包含阵列1的3个阵列:{P1,P2};数组2:{P3};数组3:{P4,P5,P6}。

这是动态变化的。

在Java中,我们可以拥有一个arraylist数组并使其工作(我能想到的解决方案之一)。我们如何才能在PHP中实现这样的目标?

1 个答案:

答案 0 :(得分:2)

你也可以在PHP中使用数组:

$array1 = array($P1, $P2);
$array2 = array($P3);
$array3 = array($P4, $P5, $P6);

你可能也希望将它堆叠到另一个数组中(按分数分组,可能就是你所认为的“java中的arraylist”):

$players = array();
foreach(array($P1, ..., $P5) as $player) {
    $score = $player->score;
    $players[$score][] = $player;
}
var_dump($players);

但是,如果任何玩家组中的值发生变化,则必须更新数据:

class Pairing
{
  private $players;
  public function __construct(array $players) {
    $this->players = $players;
  }
  public function getPairing() {
    $players = array();
    foreach($this->players as $player) {
      $score = $player->score;
      $players[$score][] = $player;
    }
    return $players;
  }
}

$pairing = new Pairing(array($P1, ..., $P5));
...
var_dump($pairing->getPairing());

或选择最有效处理事件的选择模式。