#nim #nimber #nim-game

nimlib

A Rust 库用于 Nim 游戏:计算 nim 值和可能的走法

4 个版本

0.1.1 2023 年 2 月 11 日
0.1.0 2023 年 2 月 10 日
0.0.1 2023 年 1 月 25 日
0.0.0 2023 年 1 月 25 日

877游戏开发

LGPL-3.0-or-later

36KB
427 代码行

NimLib

githubcrates-iodocs-rs

A Rust 库用于 Nim 游戏:计算 nim 值和可能的走法

一个名为 Nim 的游戏

Nim 指的是一系列(数学/策略)游戏,其中两名玩家轮流从硬币堆中移除硬币。最后合法走法的玩家获胜。

每个 Nim 游戏都由一组规则组成,这些规则定义了在单次移动中可以从堆中移除多少枚硬币。每次移动恰好影响一个硬币堆,可能需要将堆分成两个非空堆。

一种名为 Poker-Nim 的 Nim 版本,其中添加了硬币池,移除的硬币被保留在玩家的池中,如果规则允许并且玩家希望,可以在未来的走法中使用。

关于库的介绍

该库计算给定高度的堆的 nim 值和给定位置的可能的走法。

Nim 值

堆的 nim 值 可以被认为是一种分数或评估,用于评估当前位置对即将走动的玩家有多好。
请参阅 nimlib::nimbers 模块中的计算 nim 值的函数。

0 nim 值表示即将走动的玩家没有获胜策略,将输掉游戏,无论他们走什么,只要对手采取最优策略。
相反,大于 0 的 nim 值表示即将走动的玩家有获胜策略,无论对手如何走,只要采取最优策略,他们将赢得游戏。

走法

nimlib::moves 模块提供了计算给定位置的可能的走法的函数。

位置简单地指的是一堆栈的列表/集合,位置的数量是位置中各个栈的nimber的异或和,关于整个位置获胜条件的规则与单个栈的规则相同。

许可证

GNU Lesser General Public License v3.0

版权(C)2023 @Tanja-4732

NimLib 是免费软件:您可以在自由软件基金会发布的 GNU Lesser General Public License 的条款下重新分发它和/或修改它,无论是许可证的第 3 版,还是(根据您的选择)任何后续版本。

NimLib 的分发是希望它将是有用的,但没有任何保证;甚至没有关于其商誉或特定用途的暗示保证。有关更多详细信息,请参阅 GNU Lesser General Public License

您应该已收到与 NimLib 一起提供的 GNU Lesser General Public License 的副本。如果没有,请参阅 https://gnu.ac.cn/licenses/,特别是 https://gnu.ac.cn/licenses/lgpl-3.0.html

依赖项

~0.4–1MB
~23K SLoC