第8期曾经提供过一个猜数游戏,大家还有印象吧?要想猜中那个数,还真不容易,不过借助一下电脑就容易多了。
经过分析容易得出,在猜数游戏中,最小的数字是0123,最大的数字是9876,其间一共有10×9×8×7=5040个数字。于是,我们先从0123到9876循环一遍,筛去有重复位数的数字,把它们放入一个大数组中备用。
然后就很容易了,随机抽取一个数字显示出来,让用户回答使用这个数字进行猜数得到的结果是什么。用户回答了结果后,我们就在整个数组中循环一遍,依次用各个数字作为答案,判断输入了用来尝试的那个数字后得到的提示会是什么。如果提示和用户给出的提示不同,则删去那个数字。
如法炮制,层层筛选,不一会儿就能猜出正确结果了。以下是一次运行时的截屏:
5040 numbers remained.
9625
What's the response? 2a0b
180 numbers remained.
8621
What's the response? 1a1b
48 numbers remained.
9608
What's the response? 2a2b
1 number remained.
9680
What's the response? 4a0b
一般情况下,即使4次猜不中,6次也应该能猜中了。
如果你也喜欢猜数游戏的话,不妨下载了看看,挺好玩的。