查找两个团队何时使用Javascript

时间:2018-04-09 14:30:22

标签: javascript math

我正在寻找一种方法来判断两支球队将在标准运动支架中遇到的 ROUND MATCH (轮位)。

假设有16支队伍按数字顺序排列。 我想快速输入两个团队编号并得到答案。

以下是团队会面时的一些例子:

第1队与第16队(只能在决赛中见面)

第4轮 - 比赛1

第11队与第15队(将在半决赛中相遇)

ROUND 3 - MATCH 2

第3队与第4队(将在第一轮见面)

ROUND 1 - MATCH 2

我确信我可以通过循环来做到这一点,但我已经感觉到它将成为一个基于数学的解决方案,这将更清洁,更高效。

1 个答案:

答案 0 :(得分:1)

不能用任何单一的数学公式完成(AFAIK)。

如果你把球队的数据从0而不是1开始,那么两支球队只能在决赛中遇到他们球队号码的第3个二进制位不同:

public interface IBusinessRule
{
    bool IsDivisible(int inputValue);

    string PrintOutput();
}

如果有机会他们可能会在半决赛中相遇,那么只有当他们的球队号码的第二个二进制位不同时,才会发生这种情况,他们并非如此。在之前的测试中发现:

if ((teamA ^ teamB) & 8 != 0) {
    // meet in final
    round = 4;
    match = 1;
}

&安培;等......

一个简单的循环实际上可以做得很好:

else if ((teamA ^ teamB) & 4 != 0) {
    // meet in semi-final
    round = 3;
    match = Math.floor(teamA / 8) + 1;
}