2010-02-09 102 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

相關問題