Reshetov>>: Бородатая игра. Называется "Ним". Стратегия заключается в том, что количество спичек на каждом "этаже" преобразуется в двоичное число, а потом считается четность-нечетность для отдельных колонок нулей и единиц.
Пример: предположим, в игре три кучки, в них соответственно 2 (0010 в бинарном представлении), 8 (1000) и 13 (1101) предметов. Ним-сумма этой позиции — 7 (0111).
Следовательно, выигрышная стратегия состоит в том, чтобы взять 3 предмета из третьей кучки — там останется 10 (1010) предметов, и ним-сумма позиции станет 0 (0000).
Предположим, после вашего хода противник забирает все предметы из первой кучки — выигрышная стратегия будет заключаться в том, чтобы забрать 2 предмета из третьей
кучки. В таком случае после вашего хода в кучках будет соответственно 0 (0000), 8 (1000) и 8 (1000) предметов, ним-сумма по прежнему будет равняться 0.
Попробуем разобрать пример, который приведён на википедии.
Складываем числа:
0010+1000+1101 = 0111 если не учитывать перенос единиц в старший разряд. Согласен. Как только ним-сумма была вичислена, автор утверждает, что нужно взять три предмета из третьей кучки. Вот этого-то я и не понял. С чего он взял что брать нужно только три предмета и почему именно из третьей кучки? Ведь для того, чтоб ним-сумма стала равна 0 нужно из числа 0111 вычесть 0111, то есть, вычесть семь.
Конечно, можно - если противник тоже владеет оптимальной стратегией. И от того, кто ходит первым, тоже зависит, похоже.
是的,是的,两行是关键点。但不是任何两行,而是有资格的。
- 如果你离开他1,1,你就输了
- 如果你离开他等于n,n(n>1),他就输了。
- 如果你留给他任何两个不相等的数字,他就赢了。
问题是如何对这两行进行优化移动。
Ухххх, Парни, ТАКУЮ штуку сегодня поймал - закачаетесь :)))))))))
我怀疑这个人在喝醉的时候把数字转换成二进制...嗯,对于小数字来说,这很容易。如果他的胸口已经有三品脱的啤酒了呢?
Бородатая игра. Называется "Ним". Стратегия заключается в том, что количество спичек на каждом "этаже" преобразуется в двоичное число, а потом считается четность-нечетность для отдельных колонок нулей и единиц.
有什么解决办法吗?
На википедии https://ru.wikipedia.org/wiki/Ним_(игра) есть описание выигрышной стратегии. Честоно говоря, я так и не понял, в чём суть. Как-то мутно написано.
里面说得很清楚。将匹配数转换成二进制数字,然后通过模2逻辑加法对数字进行位运算--这就是计算奇偶性和奇数的完全类似物。我们得到一个策略,也就是你想归零的数字。取 "底线",即匹配数量大于或等于策略数量。如果它相等,那么我们就抽出地板上的所有火柴。
如果不相等,那么我们就用二进制加法modulo 2将地板上的匹配数量加到数字策略上。我们得到的结果是,也就是说,在 "地板 "上应该保留多少根火柴,才能使下一个棋手的行动成为肯定的失败者。拿走 "地板 "上的额外火柴。
我怀疑这家伙在醉酒时将数字转换为二进制
...嗯,对于小数字来说,这很容易。如果他的胸口已经有三升啤酒了呢?
一切都简单多了。对于这样的比赛数量,所有的获胜组合都可以很容易地记住和回忆起来,即使是在喝醉的时候。作为一个学生,我正是这样做的,并击败了我的同学。这就是为什么我说这是一个大胡子的游戏。
让我们试着解析一下维基百科上给出的例子。
把这些数字加起来。
0010+1000+1101=0111,如果不考虑单位转移到高位的话。同意。一旦计算出nim-sum,作者指出,有必要从第三堆中取出三件物品。这就是我不明白的地方。为什么他认为有必要只拿三样东西,为什么要从第三堆里拿?因为为了使总和为0,你必须减去0111,即从数字0111中减去7。
Попробуем разобрать пример, который приведён на википедии.
Складываем числа:
0010+1000+1101 = 0111 если не учитывать перенос единиц в старший разряд. Согласен. Как только ним-сумма была вичислена, автор утверждает, что нужно взять три предмета из третьей кучки. Вот этого-то я и не понял. С чего он взял что брать нужно только три предмета и почему именно из третьей кучки? Ведь для того, чтоб ним-сумма стала равна 0 нужно из числа 0111 вычесть 0111, то есть, вычесть семь.
0010
1000
1101
-----
0111是结果,即第一列有偶数的匹配,其余有奇数的匹配。
三楼1101=13
将三楼的桩数与结果相加。
1101
0111
----
1010 = 10
13-10=3,即需要从第三层拿走3根火柴,然后剩下10根火柴,在二进制系统中=1010。
我们检查剩下的东西。
0010
1000
1010
-----
0000是胜利的策略