Каждый день я решаю несколько задач по программированию и головоломок из рейтингового режима Codr. Цель - достичь звания гения, попутно объясняю, как их решаю. Для начала вам не нужен опыт программирования, и вы узнаете массу нового и интересного по ходу дела.

function PES(nums) {
  const ret = [];
  for (let i = 0, temp = 1; i < nums.length; i++) {
    ret[i] = temp;
    temp *= nums[i];
  }
  for (let i = nums.length - 1, temp = 1; i >= 0; i--) {
    ret[i] *= temp;
    temp *= nums[i];
  }
  return ret;
}
let A = PES([1, 4, 5]);
A = A[0]
// A = ? (number)

В сегодняшней задаче нам нужно вычислить значение A[0], где A - это массив и результат функции PES([1,4,5]).

На первый взгляд я понятия не имею, что делает PES, кроме того, что он содержит два цикла for и пару умножений; похоже на простую математику, так что это не должно быть слишком сложно.

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

--- first for-loop (forwards)
ret = []
temp = 1
  ret = [1]
  temp = 1*1 = 1
  ret = [1, 1]
  temp = 1*4 = 4
  ret = [1, 1, 4]
  temp = ... // I don't care
--- second for-loop (backwards)
ret = [1, 1, 4]
temp = 1
  ret = [1, 1, 4*1]
  temp = 1*5 = 5
  ret = [1, 1*5, 4]
  temp = 5*4 = 20
  ret = [1*20, 5, 4]
  temp = ... // I don't care

return ret=[20, 5, 4] = A

Мы находим, что A[0] == 20.

Решая эти задачи, вы становитесь лучшим программистом. Вы узнаете новые и лучшие способы анализа, отладки и улучшения кода. В результате вы станете более продуктивным и ценным в бизнесе. Начните работу и станьте сертифицированным Codr сегодня на https://nevolin.be/codr/