24点游戏规则如下:给定四个1~9之间的整数,这些整数之间可以进行四则运算,每个数字只能且必须使用一次,最终凑出24来。
例如:1 5 5 5 。
二十四点游戏有时又被称作二十一点游戏,也就是凑出21来。
因为问题规模非常小(远远小于10000),所以我们可以对二十四点游戏进行一些暴力性的探索,查看一下二十四点游戏有哪些道道。
探究一:给定一个有解的问题,最多能有多少种解法
下面的数字表示问题的解法种数可能取到的数字
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 36, 40, 41, 48, 51, 56, 57, 58, 61, 74, 75, 80, 82, 83, 85, 108
给定一个问题,最多可能有108种解法。
探究二:每个解法种数对应多少个问题
解法种数 0 : 问题个数 91
解法种数 1 : 问题个数 22
解法种数 2 : 问题个数 37
解法种数 3 : 问题个数 20
解法种数 4 : 问题个数 30
解法种数 5 : 问题个数 26
解法种数 6 : 问题个数 21
解法种数 7 : 问题个数 26
解法种数 8 : 问题个数 17
解法种数 9 : 问题个数 22
解法种数 10 : 问题个数 12
解法种数 11 : 问题个数 15
解法种数 12 : 问题个数 20
解法种数 13 : 问题个数 17
解法种数 14 : 问题个数 11
解法种数 15 : 问题个数 9
解法种数 16 : 问题个数 10
解法种数 17 : 问题个数 8
解法种数 18 : 问题个数 8
解法种数 19 : 问题个数 5
解法种数 20 : 问题个数 5
解法种数 21 : 问题个数 6
解法种数 22 : 问题个数 2
解法种数 23 : 问题个数 3
解法种数 24 : 问题个数 5
解法种数 25 : 问题个数 5
解法种数 26 : 问题个数 1
解法种数 28 : 问题个数 4
解法种数 29 : 问题个数 2
解法种数 30 : 问题个数 2
解法种数 31 : 问题个数 1
解法种数 32 : 问题个数 1
解法种数 33 : 问题个数 4
解法种数 36 : 问题个数 1
解法种数 40 : 问题个数 1
解法种数 41 : 问题个数 1
解法种数 48 : 问题个数 1
解法种数 51 : 问题个数 1
解法种数 56 : 问题个数 1
解法种数 57 : 问题个数 3
解法种数 58 : 问题个数 1
解法种数 61 : 问题个数 1
解法种数 74 : 问题个数 5
解法种数 75 : 问题个数 3
解法种数 80 : 问题个数 1
解法种数 82 : 问题个数 2
解法种数 83 : 问题个数 1
解法种数 85 : 问题个数 2
解法种数 108 : 问题个数 2
探究三:可解问题占比,为什么是24点游戏而非其它?
去重之后的问题总数为495个问题,可解问题总数404。
为啥发明24点游戏的人会选择24点呢?
24点游戏和21点游戏到底哪个更合理?
显然,可解问题占总问题的比例越多,题库越大,越容易制造问题。
所以,枚举1点游戏、2点游戏、3点游戏 ......20点游戏、21点游戏、22点游戏、23点游戏、24点游戏......100点游戏。
看一下每个游戏的可解问题占比,占比最大的那个游戏就是最好玩的游戏。
因为问题总数确定,所以只需要求不可解的问题个数即可。下列数据分别表示x点游戏对应的无解问题个数。
1 25
2 3
3 23
4 31
5 33
6 26
7 34
8 40
9 42
10 48
11 78
12 51
13 109
14 85
15 79
16 70
17 142
18 90
19 160
20 110
21 141
22 180
23 198
24 91
25 195
26 195
27 162
28 144
29 240
30 158
31 259
32 167
33 229
34 253
35 197
36 120
37 293
38 291
39 263
40 170
41 302
42 210
43 326
44 254
45 217
46 308
47 322
48 154
49 279
50 271
51 309
52 309
53 346
54 217
55 308
56 220
57 336
58 343
59 375
60 219
61 378
62 359
63 257
64 271
65 350
66 319
67 398
68 369
69 372
70 284
71 396
72 202
73 403
74 399
75 358
76 379
77 370
78 352
79 416
80 287
81 352
82 415
83 435
84 292
85 416
86 436
87 418
88 364
89 435
90 289
91 407
92 422
93 430
94 452
95 437
96 299
97 453
98 400
99 388
显然,24点游戏比21点游戏“好玩”,但是最好玩的游戏却是“2点游戏”。
其实,以上“好玩”的定义只考虑了“题库”的大小,却没有考虑题库的质量。所以,好玩也可以定义为:
解法在1~5之间的问题总数,这个数字越多,游戏越好玩
探究四:二十四点游戏中只有一种解法的问题有哪些?
只有一种解法,说明问题比较困难。一般来讲,比较难的问题都具有如下形式:
a/b得到一个分数
c-a/b得到另一个分数
d/(c-a/b)得到最终答案24
难点在于人的直觉里面很难想到分数。
[1, 1, 1, 8]
[1+1=2, 1+2=3, 8*3=24]
[1, 1, 6, 9]
[1+1=2, 9*2=18, 6+18=24]
[1, 1, 8, 8]
[1+1=2, 8*2=16, 8+16=24]
[1, 2, 7, 7]
[7*7=49, 49-1=48, 48/2=24]
[1, 3, 4, 6]
[3/4=3/4, 1-3/4=1/4, 6/1/4=24]
[1, 5, 5, 5]
[1/5=1/5, 5-1/5=24/5, 5*24/5=24]
[1, 6, 6, 6]
[6-1=5, 6*5=30, 30-6=24]
[1, 6, 6, 8]
[6/8=3/4, 1-3/4=1/4, 6/1/4=24]
[2, 2, 2, 5]
[2*5=10, 2+10=12, 2*12=24]
[2, 2, 2, 7]
[2*7=14, 14-2=12, 2*12=24]
[2, 2, 2, 9]
[2+9=11, 2*11=22, 2+22=24]
[2, 2, 3, 5]
[2*5=10, 10-2=8, 3*8=24]
[2, 2, 5, 8]
[5+8=13, 2*13=26, 26-2=24]
[2, 4, 5, 5]
[5+5=10, 2*10=20, 4+20=24]
[2, 4, 7, 7]
[7+7=14, 2*14=28, 28-4=24]
[2, 5, 7, 8]
[2*5=10, 10-7=3, 8*3=24]
[2, 7, 8, 9]
[7+9=16, 2*16=32, 32-8=24]
[3, 3, 5, 7]
[3*5=15, 15-7=8, 3*8=24]
[3, 3, 6, 6]
[6/3=2, 6+2=8, 3*8=24]
[3, 3, 7, 7]
[3/7=3/7, 3+3/7=24/7, 7*24/7=24]
[3, 3, 8, 8]
[8/3=8/3, 3-8/3=1/3, 8/1/3=24]
[4, 4, 7, 7]
[4/7=4/7, 4-4/7=24/7, 7*24/7=24]
最后
github.com/weiyinfu/point24