首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取在dicegame中给出最高分数的facevalues的组合

获取在dicegame中给出最高分数的facevalues的组合
EN

Stack Overflow用户
提问于 2017-07-03 19:59:51
回答 1查看 63关注 0票数 0

(我们不需要自动完成,所以我可以让玩家选择要使用的骰子,然后检查用户的选择是否有效),但现在我已经开始考虑它了,我不能停止……

问题如下:

在这个例子中,我已经掷出了骰子,它们的值如下:

代码语言:javascript
运行
复制
[2, 2, 2, 1, 1, 1]  

这些值应该相加在一起(例如,一个值为1的骰子和另一个值为2的骰子在一起是3),然后在游戏中有不同的回合,目标是获得不同的值(可以是骰值的组合(相加),例如dicevalues: 2,2,2,2,2,2,2,2,2,2可以给用户总共12分,如果4是当前轮的目标)

代码语言:javascript
运行
复制
2 + 2 = 4
2 + 2 = 4
2 + 2 = 4

如果这一轮的目标是6,那么它将是

代码语言:javascript
运行
复制
2 + 2 + 2 = 6  
2 + 2 + 2 = 6  

相反,这会给玩家12分(6 + 6)

代码语言:javascript
运行
复制
[1, 3, 6, 6, 6, 6]

代码语言:javascript
运行
复制
2 + 1 = 3
2 + 1 = 3
2 + 1 = 3

会给用户9分。但是如果它的计算方法是错误的,而不是每个1都用完了,那么就会得到两个1+1+1的apierd,这只会给玩家3分,这两个不能使用。

代码语言:javascript
运行
复制
[6], [5, 1], [4 ,2]  

用户得到18分(3 * 6)

代码语言:javascript
运行
复制
 [1 ,2 ,3], [6]  user gets 12 points (2 \* 6) (Here the user gets six points less due to adding upp 1 + 2 + 3 instead of doing like in the example above)

骰子的值可以在1到6之间。

我真的没有做更多的思考,我非常确定我现在就可以做到,但是如果我想使用8个骰子来代替它,那么它将是一个扩展非常糟糕的解决方案,每次我开始在它上编程时,我开始认为这必须是一个更好/更简单的方法……谁有什么建议从哪里开始呢?

EN

回答 1

Stack Overflow用户

发布于 2017-07-04 23:46:23

对于看起来像这样令人困惑的问题,从一些工作和示例开始是一个非常好的主意。我们有6个骰子,范围从1到6。因此,我们可以进行的可能组合是:

代码语言:javascript
运行
复制
target = 2

1 combination: 2
2 combination: 1+1

target = 3

1 combination: 3
2 combination: 2+1
3 combination: 1+1+1

target = 4

1 combination: 4
2 combination: 3+1 
               2+2
3 combination: 2+1+1
4 combination: 1+1+1+1

target = 5

1 combination: 5
2 combination: 4+1
               3+2
3 combination: 2+2+1
4 combination: 2+1+1+1
5 combination: 1+1+1+1+1

看到模式了吗?提示,对于我们可以添加的第一个数字,我们从目标倒退到1,然后给定第一个数字,以及组合的大小,后续数字的大小是有限制的!

可能的组合有一个有限的列表。你可以通过寻找1个组合分数,并从可用的骰子中删除这些组合分数。然后继续寻找2个组合分数,等等。

如果你想了解更多关于数学的子领域,你需要寻找的术语是"Combinatorics“。玩得开心!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44885036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档