什么是一个很好的算法(用语言)如何用Lua解决Project Euler中的#8?

时间:2014-07-02 19:18:19

标签: algorithm lua splice

这就是问题:

查找具有最大产品的1000位数字中的13个相邻数字。这个产品有什么价值?

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

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

1 个答案:

答案 0 :(得分:-1)

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

  1. 将前13位数相乘。您可以使用sub从字符串中的位置提取这些数字,并使用tonumber将它们转换为要乘以的数字。我们假设我们将结果称为product
  2. 浏览pos = 14到1000的位置,并将product重新计算为product / number-from-position-pos-13 * number-from-position-pos。将它与迄今为止看到的最大产品进行比较,并记住位置是否是最大的产品。
  3. 返回位置。
  4. 由于序列可能包含零,因此可能需要单独处理。您可以跟踪当前序列有多少个零,而不是乘以零,如果序列中的零个数大于零,则不会更新最大的数。如果位置pos-13为零,则减少零的数量,当位置pos为零时,增加零计数器。