javascript - 用于简单游戏的 AI 机器人
问题描述
有一个相对简单的游戏有这样的规则:
有一个保险箱需要解锁。
保险箱密码是一个 4 位数字,没有重复(1234、4867、1092 等, 1231 之类的密码在这个游戏中是不可能的)。
游戏给出 5 次尝试猜测正确的代码。
假设我开始了一个新游戏,并且在第一次尝试时我测试了 0123 之类的代码。
比赛以2-1回应。2 表示代码 0123 有 2 个正确的数字,我需要在最终解锁代码中使用它们。1 表示这两个数字之一已经在正确的位置。
在此之后,我有 4 个完全相同的步骤,我根据之前测试的数字和游戏的响应尝试不同的代码。
目标是获得最终代码,比如说 9135(基于之前的 0123 尝试),游戏的响应需要是4-4(4 个正确的数字,4 个就位)。越早发生 - 越好。
我知道这可以通过排除一些组合来使用组合学来解决,但我不知道如何为下一次尝试选择最加权的组合,并希望 AI 可以做得更好。
我是一名前端开发人员,也是 AI 的绝对初学者。我真的不明白解决这个问题的代码会有多复杂以及需要付出什么努力。如果您能向我解释并分享一些类似已解决任务的链接/代码示例(语言无关紧要,但如果是 JS 或 Python 会很好),我将非常感激,所以我可以基于此解决我的问题。
如果我的解释不清楚,请随时告诉我,我会尝试更简单的词:)谢谢!
解决方案
您的游戏听起来与Mastermind相似,只是使用数字而不是彩色钉。
谷歌搜索“Mastermind AI”会导致例如这个使用遗传算法来解决 Mastermind 的实现,您可能会从中寻找灵感。
推荐阅读
- python - 如何从集合中的字符串中删除多余的引号?
- java - 在 Mapbox 中获取 geogson 特征的坐标
- sql - 如何将附加文本(_lab)添加到 SQL 中相同文本(system_user)的所有实例?
- vb.net - 如何从 DataGridView 添加到文本文件而不删除其中已有的内容?
- java - 通过参数值检索 ArrayList 对象
- java - 将数据发送到多个活动
- c - 串行端口上的第二次读取以规范模式返回换行符
- javascript - Vue.js 中的组件未捕获自定义事件
- android - 智能转换为“GridLayoutManager”是不可能的,因为“ViewManager”是一个可变属性,此时可能已更改
- python - 特定列表理解