伪码骰子算法,需要一些指导

时间:2016-07-12 01:33:33

标签: javascript pseudocode

  

在本练习中,您将掷出一对骰子,直到数字加起来给定的数字。您可以假设给定的数字是2,3,6或12.使用伪代码,编写一个算法,该算法返回掷骰子以实现此数字的次数。

我完全不知道如何开始这样做。你能指导一下吗?

最后一句话是什么意思?

2 个答案:

答案 0 :(得分:1)

这应该让你开始。赋值所要求的细节可能是从这里改进的一个或两个级别。例如,"滚动模具"意思。可能与将某种随机数保存到变量有关...

define rollRequiredForA(target) {
    if target is not an integer or is outside the valid bounds abort

    initialize a counter to 0

    loop
        increase the counter by one
        roll two dice
        add results together
        if the result equals target return counter
    end loop
}

答案 1 :(得分:1)

首先让我谈谈你关于问题最后一句的问题:

我会将其分解。

第一个伪代码是一种简化步骤的过程,您需要以一种非常有代表性的格式解决问题,而不是用任何编程语言编写的实际代码。例如,伪代码可能是这样的:

if the earlier result is 2 then
   use this list: Britney, Caitie, Sierrah
else
   use this other list: Brooke, Josh, Zach 

其次,算法是计算或解决问题时要遵循的一组规则。这就像解决问题的公式。一些日常的例子可能是:

  • 开车回家:你应该走哪条路?最短路线上会有交通吗?如果是这样,它会减慢你的速度而不是采取稍长的路线吗?这些都是算法中会提出的问题。
  • 排序:通常情况下,当您对某些内容进行排序时,即使您可能没有意识到这一点,例如检查每个内容并将第一个从堆中拉出并将其放在顶部然后是第二个,然后是第三个,依此类推。依此类推。
  • 划分和征服:这是日常生活中另一种非常常见的算法。

有关更多示例,请查看this quora post

所以换句话说,最后一句话要求你写一个简化的步骤,你需要采取这些步骤来计算掷骰子的数量,以使这两个骰子加起来给定的数量

现在已经不在了,让我们解决实际问题

为了让你开始,你将不得不运行某种循环(也许使用do-while循环?),并且可能最好在某种方法中进行。你需要有一个计数器,如果你的骰子没有再添加到目标掷骰子并增加计数器直到你的掷骰加起来,然后返回计数器的那个值

define rolls needed(target)

   initialize counter as 0
   initialize sum

   do this loop
      increase your counter  
      roll your dice
      add results together
   while sum does not equal target

   return your counter
end