freeCodeCamp/curriculum/challenges/chinese/10-coding-interview-prep/project-euler/problem-301-nim.md

1.8 KiB
Raw Blame History

id challengeType videoUrl title
5900f4991000cf542c50ffab 5 问题301尼姆

Description

尼姆Nim是一堆用石头堆砌而成的游戏两名玩家轮流用它来清除任何堆石直到没有石头为止。

我们将考虑Nim的三堆普通播放版本其工作方式如下

-游戏开始时有三堆石头。 -玩家在回合时从任何一个堆中移出正数的石头。 -第一个无法移动(因为没有剩余的石头)的玩家输了。

如果n1n2n3表示由大小为n1n2和n3的堆组成的Nim位置则存在一个简单函数Xn1n2n3-您可​​以查找或尝试自己推断-返回值如果采用完美策略将要移动的玩家最终会输掉则返回零或非零如果采用完美策略将要移动的玩家最终会获胜。例如X1,2,3= 0因为无论当前玩家做什么他的对手都可以通过移动而留下两个相同大小的堆而此时当前玩家的每一步都可以被镜像他的对手直到没有剩下的石头因此当前玩家输了。为了显示

-当前玩家移至1,2,1 -对手移动至1,0,1 -当前玩家移至0,0,1 -对手移动到0,0,0因此获胜。

对于多少个正整数n≤230Xn2n3n= 0

Instructions

Tests

tests:
  - text: <code>euler301()</code>应该返回2178309。
    testString: assert.strictEqual(euler301(), 2178309);

Challenge Seed

function euler301() {
  // Good luck!
  return true;
}

euler301();

Solution

// solution required

/section>