首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要一些关于骰子滚动算法的帮助

需要一些关于骰子滚动算法的帮助
EN

Stack Overflow用户
提问于 2011-01-12 13:56:18
回答 2查看 6.4K关注 0票数 1

我将如何对一种方法进行伪编码:

  • 滚动一种模具-4,6,8,10或12边

  • 可卷起多达10种此类模具

  • 如果超过一半的模具是1,请打印一条消息,说明它们已经崩溃,并结束了

的程序。

  • 如果任何模具都等于滚动的模具类型,则从组中获取最高值。以及重新滚动的模具,这等于价值的模具类型轧制。

^也就是说-假设你有3个六边模,你滚动它们,得到一个4,2和6。你取6的值,因为它是最高的。然后你重新翻滚那是6分的模具。如果你得到一个6,你把这6加到前面的6,然后重新滚。如果没有,只需将最高的模具添加到前面的值中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-12 14:12:01

我想你的问题说明了你觉得这很困难的原因。你试图在一个地方解决太多的问题,而这会变得令人难以抗拒。您不想创建一个方法来完成这个任务。您会想要创建几个。首先,将问题分解为它的组成部分。

注意:我不是以面向对象的方式来处理这个问题,以使这个答案更容易解析。我鼓励你更详细地考虑一下设计。

要求1:卷一种模具-4,6,8,10或12边

好的-所以我们需要一些类似于:

int辊(int边);

基本上,Roll只返回1和边(包括在内)之间的随机值。

要求2:最多可卷取10种此类模具

这可能是一个for循环。

要求3:如果超过一半的模具是1,请打印一条消息,说明它们已失效,并结束了程序

这一要求意味着您要将每次调用的结果存储在一个集合中,例如,一个列表或一个intarray of integers

接下来,它表示您正在迭代该集合,并计算为"1“的卷数。如果计数大于滚动总数的一半以上,则结束该程序。计数很容易(因为循环或外汇可能是你最好的选择),而且你知道做了多少卷(既取决于集合中的项目数,又因为你的for循环中有一个计数器,当你制作卷的时候……那就分家比较吧。

要求4:如果任何模具与轧制模具的类型相等,则从组中取最高值。以及重新滚动该模具,该模具的值等于所轧制的模具类型.

再次-您需要迭代结果集并执行操作请求。我不会试图通过将此规则与以前的规则相结合来“优化”您的解决方案--它只会使解决方案变得复杂,而不会带来真正的好处。

票数 6
EN

Stack Overflow用户

发布于 2011-01-12 14:09:39

你的算法必须:

  1. 滚动骰子
  2. 检查结果是否为1s
  3. 检查,并可能重滚高数字的
  4. ,跟踪已接受的数字,并从滚动的骰子

运行总计值。

它没有更多的,然后,实际做它为你。

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

https://stackoverflow.com/questions/4669557

复制
相关文章

相似问题

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