2010-02-09 100 views
2

什么是确定以下内容的好方法。什么是我无法弄清楚的优雅模数?

你有一个游戏玩家的表格,大小为N的阵列。每一轮,每个玩家轮流转。

你知道应该先走的玩家的索引,并且每个玩家都会在阵列中上升一圈,并在碰到最后一个索引时循环回0。例如,如果索引3处的玩家先走了,那么4将会走第二,然后2走到最后。

你如何计算最后一轮的玩家指数?

这里有一种方法:

var startPosition = 3; 
var numberOfPlayers = 10; 

for (var i=0;i<numberOfPlayers;i++) { 
    startPosition++; 
    if (startPosition == numberOfPlayers) startPosition = 0; 
} 

回答

7
(startPos + numberOfPlayers - 1) % numberOfPlayers 
+0

这甚至比我最初发布的模更好,我不确定什么是(-1%n):) – 2010-02-09 20:02:20

+2

最糟糕的部分是'-1%n'的结果取决于你使用什么语言。 – 2010-02-09 20:11:20

1

并不总是结果startPosition > 0 ? startPosition - 1 : numberOfPlayers - 1,即它总是比指定startPosition少一个,除了在指定startPosition为0的情况下..

的更“优雅”模可以是像(startPosition + numberOfPlayers - 1) % numberOfPlayers

+0

我也打算发表这个,但感觉很蠢。我以为我错过了这个问题。 – Kylar 2010-02-09 19:57:29

+0

这对我来说似乎也有点微不足道,但可能这就是安德鲁想要的。 – 2010-02-09 20:00:27

+0

是啊,那就是我一直在寻找的东西...我知道这是微不足道的,当我来找它,但由于某种原因,我couldn不知道:P – 2010-02-09 20:06:18

相关问题