确定以下内容的好方法是什么。
你有一个游戏玩家的桌子,大小为N.每轮,每个玩家轮流。
你知道应该首先进入的玩家的索引,并且每个玩家将在数组中上升,并在它到达最后一个索引时循环回到0。例如,如果指数3的玩家先行,那么4会成为第二,2则是最后一次。
如何计算回合中最后一位玩家的指数?
这是一种方式:
var startPosition = 3;
var numberOfPlayers = 10;
for (var i=0;i<numberOfPlayers;i++) {
startPosition++;
if (startPosition == numberOfPlayers) startPosition = 0;
}
答案 0 :(得分:7)
(startPos + numberOfPlayers - 1) % numberOfPlayers
答案 1 :(得分:1)
结果总是startPosition > 0 ? startPosition - 1 : numberOfPlayers - 1
,即除了startPosition为0的情况外,它总是比startPosition小一点。
更“优雅”的模数可能类似于(startPosition + numberOfPlayers - 1) % numberOfPlayers
。