擅长:python、mysql、java
<p>虽然@AKX认为这是智囊团的一个变种是正确的,但遗传算法可能不是第一个考虑的地方,因为这可能比简单的方法更复杂</p>
<p><a href="https://en.wikipedia.org/wiki/Donald_Knuth" rel="nofollow noreferrer">Donald Knuth</a>是著名的(在许多其他事情中)解决方案的游戏。在<a href="https://puzzling.stackexchange.com/a/547/7630">Puzzling Stack Exchange</a>站点上有一个很好的关于这种方法的概述,如果您查看关于这个问题的其他答案,也会讨论如何编写解决方案的代码</p>
<p>在您的例子中,简单的方法是编写一个从0000到9999迭代的函数。这些都是可能的答案。但是,当您遍历这些数字时,您希望删除(1)所有具有重复数字的数字和(2)所有与目前猜测不一致的数字。任何其他数字都可以放入存储潜在答案的数组或列表中。根据这些剩余的数字,您可以猜测任何数字,然后继续此过程</p>
<p>一种更复杂的方法是使用类似于<a href="https://en.wikipedia.org/wiki/ID3_algorithm" rel="nofollow noreferrer">ID3</a>的算法进行下一次猜测,以试图找到能够最大限度地从响应中获得信息的猜测。但是,考虑到你从每次猜测中获得的信息量,这不太可能是必要的</p>