Javascript Snake草稿-整体订单位置(数学相关)

Javascript Snake草稿-整体订单位置(数学相关),javascript,math,Javascript,Math,所以我创建了一个梦幻足球选秀助手,它是一个12队的蛇形选秀格式,从1到12 LTR,从13到24 RTL,从25到36 LTR ---> 因此,A队总体排名为1的人也会发现自己处于24和25的位置 12位也有13位,因为订单环绕网格 以下是我根据选秀位置动态标记任何团队的整体顺序的方法,但我不是数学天才,而且位置=1的特殊情况似乎不适用于任何其他情况。这是可行的,但如果有人知道的话,我想知道这真正的数学是什么 这是我根据当前的解决方案,用一些示例代码创建的一个提琴 var TEAMS = 12;

所以我创建了一个梦幻足球选秀助手,它是一个12队的蛇形选秀格式,从1到12 LTR,从13到24 RTL,从25到36 LTR

--->

因此,A队总体排名为1的人也会发现自己处于24和25的位置

12位也有13位,因为订单环绕网格

以下是我根据选秀位置动态标记任何团队的整体顺序的方法,但我不是数学天才,而且位置=1的特殊情况似乎不适用于任何其他情况。这是可行的,但如果有人知道的话,我想知道这真正的数学是什么

这是我根据当前的解决方案,用一些示例代码创建的一个提琴

var TEAMS = 12;
var ROUNDS = 4; 
var POS = 1;
var $overallOrder = $('#overallOrder');
var total = TEAMS * ROUNDS;
if (POS > TEAMS) { alert("only " + TEAMS + " teams"); return false; }
for (var i=1; i<=total; i++) {
    var isMyTurn = false;
    if ((i % (2*TEAMS)) == ((2*TEAMS) - (POS-1))) {
        isMyTurn = true;
    }
    if ((i % (2*TEAMS)) == POS) {
        isMyTurn = true;
    }
    //special case for first position ?
    if (POS==1 && (i % (2*TEAMS)) == 0) {
        isMyTurn = true;
    }
    var turnText = (isMyTurn) ? i + " My Turn!" : i ;
    $overallOrder.append('<li>'+turnText+'</li>');    
}
尝试将POS var从1-12更改,您可以看到结果。同样,如果有人知道的话,我正在寻找封装上述逻辑的数学函数。谢谢


谢谢

代码中的注释会很好

基本问题是%从0运行到2*TEAMS-1,但您考虑的是从1运行到2*TEAMS:POS==1最终需要一个特例,因为2*TEAMS-POS-1原来是2*TEAMS,但i%2*TEAMS永远不是2*TEAMS。简单的解决方法是将其更改为2*TEAMS-POS-1%2*TEAMS。这可以让你把事情弄清楚

var turnText = i;

if ((i % (2*TEAMS)) == ((2*TEAMS)-(POS-1))%(2*TEAMS) 
    || (i % (2*TEAMS)) == POS) {
    turnText += " My Turn!";
}
另一种方法是使用i-1%2*个团队+1将模数转换为1到2*个团队

如果你想把它归结为一个不使用| |的条件,你可以利用团队+.5周围蛇的对称性


但我发现这比上一个版本更难阅读。

谢谢,我需要一段时间才能完全理解它,但它似乎确实有效!
if ( Math.abs(TEAMS+.5-((i-1)%(2*TEAMS)+1))==TEAMS+.5-POS )