查看: 1086|回复: 3

[日常闲聊] 猜数字的策略

简洁模式
发表于 2023-9-28 23:36:50 陕西| 2023-10-1 19:46编辑
初阶一个简单的(也适合人脑用)的策略,是Swaszek (1999-2000) 提出的方法的改良版:
从0011开始猜,接下来不断地从“所有还没被排除掉的组合”中任选一个猜,重复这个过程直到猜对为止——虽然“任选”听起来有点草率,但这个策略效果却不错:平均4.6次可以猜对(github上有个验证程序:https://github.com/kubabuda/mastermind.net 还有些算法虽然能进一步缩减次数,但只适合计算机用,不适合人脑用,就不提了(详情可以在上面的github链接和维基百科看到

中阶,能搜到一篇paper:https://www.grin.com/document/312138 其中5.3节 Human-friendly strategy 介绍了一个策略:
1. Order digits by frequency as they occur in the pruned set.
2. Choose the digits that occur least frequently and form a guess with them.
先简单列一下当前还没排除掉的所有可能的组合,选出4个出现次数最少的数码组成一个猜测……不断重复这个过程即可。听上去有点道理(尤其结合文中给的例子),“局部最优不等于整体最优”(这个技巧不止一篇paper提到过),但实际用起来会出问题,包括作者给的代码:https://github.com/namanyayg/moo 跑起来某些组合会死循环,可能还要再完善
——总得来说,虽然网上能搜到很多paper和算法,但楼主搜到的全部是面向计算机的(唯一例外是上面这篇),目前还没看到一个适合人脑用的好策略。

高阶楼主没涉猎,就不说了。抛砖引玉,等大佬来回复分享下经验
发表于 2023-9-29 00:06:59 陕西| 发自安卓客户端
看起来还不错嘛
发表于 2023-9-29 12:51:18 广东
题外话,看到IP和高阶没涉猎,一眼以为和君自己回自己贴来水了,但是发现他点了个赞

我虽然没专门算过,但实际用的初阶猜法也是这样的。其实“从没排除掉的组合中任选”很笼统,熟练了就是不用带脑子的猜法。新手的难点在于如何排除,熟手的关键点在于使用能降低排除难度和猜测次数、提高输入速度的定式来猜,最终达到人机合一

中阶方法也没错,问题是列出组合决定下一步的过程太耗时了,想要速通的玩家靠的还得是熟练
发表于 2023-9-29 23:08:38 四川
因为猜数字不只是个智力游戏也是个算法题,更何况你在github上找。。
尚未登录
您需要登录后才可以回帖 登录 | 加入学院