【发布时间】:2013-01-15 00:01:34
【问题描述】:
我有一个桌子女巫,看起来像这样:
-------------------------------------- |索引 |球员 |日期 |分数 | -------------------------------------- | 1 |一月 | 2013-01-13 | 5 | -------------------------------------- | 2 |彼得| 2013-01-13 | 6 | -------------------------------------- | 3 |克拉斯 | 2013-01-13 | 5 | -------------------------------------- | 4 |基斯 | 2013-01-13 | 7 | -------------------------------------- | 5 |威廉| 2013-01-13 | 8 | -------------------------------------- | 6 |约翰 | 2013-01-13 | 4 | --------------------------------------现在我想做一些棘手的事情,为了像 2013 年 1 月 14 日那样打下一场比赛,我们想让 2 支球队得分相等。
每个日期期间有 12 名球员,因此 2013 年 1 月 13 日是 12 名球员,而 2013 年 1 月 14 日仍然有相同的球员。
他们必须分成 2 个团队,所以 12 / 2 = 6。每个团队有 6 个人。现在这不是问题,问题是两支球队的总分必须相等或接近。
如果 12 名球员的所有分数都是 77,那么 2 支球队的总分数必须几乎相等,这样 77 / 2 = 38,5
队 1 - 球员 6 - 总分 37
队 2 - 球员 6 - 总分 40
最后查询输出一定是这样的:
----------------------------------------------------------- |索引 |球员 |日期 |分数 |团队 | ----------------------------------------------------------- | 1 |一月 | 2013-01-13 | 5 | 1 | ----------------------------------------------------------- | 2 |彼得| 2013-01-13 | 6 | 1 | ----------------------------------------------------------- | 3 |克拉斯 | 2013-01-13 | 8 | 1 | ----------------------------------------------------------- | 4 |基斯 | 2013-01-13 | 7 | 1 | ----------------------------------------------------------- | 5 |威廉| 2013-01-13 | 5 | 1 | ----------------------------------------------------------- | 6 |约翰 | 2013-01-13 | 6 | 1 | ----------------------------------------------------------- | 7 |格瑞特 | 2013-01-13 | 6 | 2 | ----------------------------------------------------------- | 8 |马杰| 2013-01-13 | 6 | 2 | ----------------------------------------------------------- | 9 |莎拉 | 2013-01-13 | 8 | 2 | ----------------------------------------------------------- | 10 |埃尔斯 | 2013-01-13 | 7 | 2 | ----------------------------------------------------------- | 11 |艾伦 | 2013-01-13 | 5 | 2 | ----------------------------------------------------------- | 12 |史蒂文 | 2013-01-13 | 8 | 2 | -----------------------------------------------------------和
----------------------------------------------------------- |团队 |分数 |日期 |球员 | ----------------------------------------------------------- |团队 1 | 37 | 2013-01-13 | 6 | ----------------------------------------------------------- |团队 2 | 40 | 2013-01-13 | 6 | -----------------------------------------------------------在#Danack 的一些启发下,我做了这个:
$difference = 10;
$team_smnstlln = array();
for($q=0; $q<1000; $q++){
$players = array();
$team_smnstlln[$q] = array(
'team1' => array(),
'team2' => array(),
'total' => 0
);
$count1 = 0;
for($w=0; $w<6; $w++){
$player = pick_random(true);
$score1 = $team_smnstlln[$q]['team1'][$player] = $data[$player]['score'];
$count1 = $count1 + $score1;
}
$count2 = 0;
for($w=6; $w<12; $w++){
$player = pick_random(true);
$score2 = $team_smnstlln[$q]['team2'][$player] = $data[$player]['score'];
$count2 = $count2 + $score2;
}
if($count1 > $count2){
$total = $count1 - $count2;
}
elseif($count2 > $count1){
$total = $count2 - $count1;
}
else{
$total = 0;
}
$team_smnstlln[$q]['total'] = $total;
if($team_smnstlln[$q]['total'] == 0){
$difference = 0;
$winner = $q;
break;
}
elseif($team_smnstlln[$q]['total'] < $difference){
$difference = $team_smnstlln[$q]['total'];
$winner = $q;
}
}
echo "Kleinst gekozen set met score verschil van $difference punten. array $winner is gekozen<br>";
$team1 = $team_smnstlln[$winner]['team1'];
$team2 = $team_smnstlln[$winner]['team2'];
print_r($team1);
print_r($team2);
// random player picker
function pick_random($gonogo){
global $players;
$go = true;
$total_players = 11;
while($go){
$player = rand(0, $total_players);
if(!in_array($player, $players)){
$players[] = $player;
$go = false;
}
}
return $player;
}
此代码运行 1000 个不同的团队设置。当得分差达到 0 时,它将停止并与最好的平等球队比赛相呼应。否则当没有 0 差异时,它会返回最低的结果
【问题讨论】:
-
获取整个内容并在 PHP 中完成,这样会更容易。
-
好的,但我如何在 php.ini 中执行此操作。我正在研究这个理论,但我坚持了下来。这就是我走了多远: 1 - 将总玩家除以 2(组成 2 支球队) 2 - 计算总分并除以 2。 3 - 组成第一支球队,当得分计数器达到总分的一半时停止并组成第 2 队。然后我坚持认为它永远不会是 50% 对 50%。
标签: php mysql database combinations