java二十一点游戏_GitHub - weiyinfu/point24: 24点游戏

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值