Что было бы хорошим алгоритмом (на словах) о том, как решить №8 в Project Euler с Lua?

Это вопрос:

Найдите тринадцать смежных цифр в 1000-значном числе, которые имеют наибольший продукт. Какова ценность этого продукта?

В lua, какой был бы лучший способ, цикл или цикл no, для сращивания и возврата 900 сто что-то 13 цифр в число, строку или массив? (Я просто использую рекурсию, чтобы найти продукт из этих 13 цифр)

Пожалуйста, не возвращайте ответ на фактическую проблему.

-3
02 июл. '14 в 19:18
источник поделиться
1 ответ

Я думаю, что простой способ сделать это, который не требует какого-либо сращивания или дополнительного хранилища, таков:

  1. Умножьте первые 13 цифр. Вы можете использовать sub для извлечения этих цифр из позиций в строке и с помощью tonumber чтобы преобразовать их в число для умножения. Пусть говорят, что мы будем называть product результата.
  2. Перейдите в позиции pos = от 14 до 1000 и пересчитайте product как product/number-from-position-pos-13 * number-from-position-pos. Сравните это с самым крупным продуктом, увиденным до сих пор, и помните позицию, если она самая большая.
  3. Возвращаемое положение.

Поскольку последовательность может содержать нули, для них может потребоваться отдельная обработка. Вместо умножения на ноль вы можете отслеживать количество нулей текущей последовательности и не обновлять наибольшее число, если количество нулей в последовательности больше нуля. Когда у вас есть нуль в позиции pos-13, вы уменьшаете количество нулей и когда у вас есть нуль в позиции pos, вы увеличиваете счетчик нуля.

-1
02 июл. '14 в 21:51
источник

Посмотрите другие вопросы по меткам или Задайте вопрос