如何使用Lua解决欧拉项目中的#8的好算法(用文字)是什么?



这就是问题所在:

在1000位数字中找出乘积最大的13位相邻数字。这个产品的价值是多少?

在lua中,什么是最好的方法,循环或不循环,拼接并返回900个数字,字符串或数组中的13个数字?(我将使用递归来找到这13位数字的乘积)

请不要返回实际问题的答案

我认为一个简单的方法来做到这一点,不需要任何拼接或额外的存储是:

  1. 前13位数字相乘。您可以使用sub从字符串中的位置提取这些数字,并使用tonumber将它们转换为要相乘的数字。假设我们将结果命名为product
  2. 遍历位置pos = 14到1000,将product重新计算为product / number-from-position-pos-13 * number-from-position-pos。将它与目前为止看到的最大的产品进行比较,如果它是最大的,请记住位置。
  3. 返回位置。

由于序列可能包含0,因此它们可能需要单独处理。您可以跟踪当前序列有多少个零,而不是乘以零,如果序列中的零数量大于零,则不更新最大的数字。当pos-13位置为零时,减少零的数量,当pos位置为零时,增加零计数器。

最新更新