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