这就是问题所在:
在1000位数字中找出乘积最大的13位相邻数字。这个产品的价值是多少?
在lua中,什么是最好的方法,循环或不循环,拼接并返回900个数字,字符串或数组中的13个数字?(我将使用递归来找到这13位数字的乘积)请不要返回实际问题的答案
我认为一个简单的方法来做到这一点,不需要任何拼接或额外的存储是:
- 前13位数字相乘。您可以使用
sub
从字符串中的位置提取这些数字,并使用tonumber
将它们转换为要相乘的数字。假设我们将结果命名为product
。 - 遍历位置pos = 14到1000,将
product
重新计算为product / number-from-position-pos-13 * number-from-position-pos
。将它与目前为止看到的最大的产品进行比较,如果它是最大的,请记住位置。 - 返回位置。
由于序列可能包含0,因此它们可能需要单独处理。您可以跟踪当前序列有多少个零,而不是乘以零,如果序列中的零数量大于零,则不更新最大的数字。当pos-13
位置为零时,减少零的数量,当pos
位置为零时,增加零计数器。