这是一篇关于用uv
依赖解析器解决 Wordle 游戏的博客文章,主要内容如下:
- 引言:作者曾写过依赖 Poetry 解析器的数独求解器并出售,如今 Python 打包技术发展,
uv
兴起,作者决定用uv
解决 Wordle 游戏,可从 GitHub 获取求解器。 - 背景:Python 项目不能使用同一包的多个版本,可将数独网格表示为 81 个包,每个包有 9 个版本,通过版本约束表示单元格间的关系,Poetry 生成锁文件求解。
- 什么是 Wordle:是一款 6 次尝试猜 5 字母单词的游戏,每次猜测会得到反馈,如
YGG..
表示第一个字母黄色,第二、三个字母绿色,第四、五个字母空白。 分析:
- 基本构建块:将 Wordle 解决方案表示为单个包的多个版本,每个版本代表一个单词,还需 5 个“位置”包,每个包有 26 个版本,通过依赖关系连接。
- 绿色和黄色:需要编码 Wordle 中更复杂的事实,如猜测
CHILD
得到..YG.
的反馈,要区分不同情况,且反馈会根据其他字母而变化。 - Python 依赖规则:将上述内容编码为 Python 依赖规则较困难,如不能简单表示“N 在位置 3 是空白”,也不支持包依赖多个其他包。
- 可能的位置包:作者提出添加一组新包,每个字母一个,版本表示该字母可能出现的位置,用二进制编码。
- 反馈包:引入“反馈包”,每个代表一个关于字母位置的陈述,有 0 和 1 两个版本,根据猜测和反馈添加依赖关系。
- 整合:将各种包通过依赖规则连接起来,包括输入层的反馈包、隐藏层的可能位置包、精确位置包和
word
包等。 - 实现:编写 Python 程序生成 5000 个包版本,展示了各种包的示例,如反馈包、可能位置包、精确位置包和
word
包等,还介绍了--find-links
和 wheels 用于输出轮子和执行依赖解析。 - 额外内容:利用 Wordle 策略使求解器更聪明,如按单词的不同字符和字符频率排序单词列表,首次猜测为“LATER”。
- 错误调试:意外遗漏
u
字母导致依赖解析错误,通过固定word
依赖找到错误。 - GitHub:代码在 GitHub 上,只需
uv
即可执行求解器,可通过参数观看求解过程。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。