3 个版本

0.1.2 2022 年 6 月 10 日
0.1.1 2022 年 4 月 17 日
0.1.0 2022 年 3 月 16 日

#1987命令行实用程序

MIT/Apache

145KB
450

prompter

Crates.io Documentation Continuous integration license rustc

prompter 是一个命令行工具,帮助你在 Wordle 游戏中选择下一个单词 - 就像剧院的提示器告诉演员接下来该说什么一样。

演示

Demo of how prompter is run in the terminal

安装

为每个 prompter 版本提供预编译二进制文件的存档,适用于 Windows、macOS 和 Linux。

或者,可以使用 cargo 安装 prompter

$ cargo install prompter

您还可以通过在 Cargo.toml 依赖列表中添加相应的条目将 prompter 作为库使用。

[dependencies]
prompter = "0.1"

文档可以在 这里 找到。

用法

您可以使用 prompter 以两种方式:要么在 Wordle 游戏中互动地使用它,要么让它自行模拟一个具有特定起始单词和目标单词的游戏结果。

在 Wordle 游戏中获得帮助

$ prompter play

在每一轮中,prompter 会向您展示排名前 10 的最佳单词,并要求您输入这一轮猜测的单词,后跟一个代表 Wordle 显示的颜色代码的字符。

G = 绿色
Y = 黄色
_ (下划线) = 灰色

请参阅上面的演示。

模拟一轮或多轮游戏

$ prompter simulate --start <WORD> --target <WORD>

此子命令模拟一个游戏,其中 --start 是要猜测的第一个单词,而 --targetprompter 尝试找到的谜底单词。起始单词之后的下一个单词是通过始终“猜测”算法分配最高得分的单词来选择的(具有相同得分的单词按字典顺序排序)。

$ prompter simulate --start trace --target today
trace -> today

---[ Round #1 ]------------------------------------------------

2314 candidate words left.
Top candidate word: trace

---[ Round #2 ]------------------------------------------------

21 candidate words left.
Top candidate word: talon

---[ Round #3 ]------------------------------------------------

2 candidate words left.
Top candidate word: today

I won after 3 rounds.
trace -> today: Won after 3 rounds

如果没有提供 --target,则将 --start 与单词列表中的所有单词进行测试。

$ prompter simulate --start trace
trace -> aback: Won after 3 rounds
trace -> abase: Won after 3 rounds
trace -> abate: Won after 3 rounds
trace -> abbey: Won after 4 rounds
trace -> abbot: Won after 4 rounds
trace -> abhor: Won after 3 rounds
trace -> abide: Won after 3 rounds
...

不使用任何参数运行此子命令将在单词列表的所有单词组合上运行模拟。这需要几个小时才能完成。

$ prompter simulate
With start word "aback", I won 2298 / 2314 games (99.31 %) in on average 3.89 rounds.
With start word "abase", I won 2298 / 2314 games (99.31 %) in on average 3.79 rounds.
With start word "abate", I won 2294 / 2314 games (99.14 %) in on average 3.77 rounds.
With start word "abbey", I won 2291 / 2314 games (99.01 %) in on average 3.89 rounds.
With start word "abbot", I won 2302 / 2314 games (99.48 %) in on average 3.82 rounds.
With start word "abhor", I won 2299 / 2314 games (99.35 %) in on average 3.72 rounds.
With start word "abide", I won 2295 / 2314 games (99.18 %) in on average 3.69 rounds.
...

所有模拟的运行结果可以在 data/results.csv 文件中找到。

算法

prompter 的算法遵循简单的直觉,即“好”的单词(或一组好单词)应该尽可能多地排除候选词。想法是找到尽可能多地“分割”单词列表的单词。对于单词列表中的每个单词 w1prompter 计算如果玩家猜测 w1 而且单词列表中的 w2 是要找的谜底单词时,Wordle 会分配给每个其他单词 w2 的颜色代码。

w1 w2 代码
aback aback GGGGG
aback abase GGG__
aback abate GGG__
aback abbey GG___
... ... ...

w1 可以激发的颜色代码数量是 w1 的得分。得分高的单词被认为是游戏中下一回合的好单词。这个计算在每一轮都会重复,在应用了 Wordle 前几轮的提示后(即 prompter 总是处于“困难模式”)。

单词列表

prompter 使用的是 Wordle 的谜底单词列表(不包括单词“slave”,因为我在尝试使用它时,Wordle 不接受作为猜测)。列表由 The Riddler 栏目的作者 Zach Wissner-Gross 提供。

许可证

根据您选择的以下任一项许可证

您可以选择。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在工作中的任何贡献,将按上述方式双重许可,没有任何额外的条款或条件。

依赖关系

~6–15MB
~183K SLoC