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

function RPN(tokens) {
  const stack = [];
  for (let index = 0; index < tokens.length; index++) {
    const token = tokens[index];
    if (!Number.isNaN(Number(token))) {
      stack.push(token);
    } else {
      const a = Number(stack.pop());
      const b = Number(stack.pop());
      if (token === '*') {
        stack.push(b * a);
      } else if (token === '/') {
        stack.push(b / a);
      } else if (token === '+') {
        stack.push(b + a);
      } else if (token === 🍎) {
        stack.push(b - a);
      }
    }
  }
  return stack.pop();
}
let arr = ['5', '4', '1', '2', '+', '7', '*', '/', '*', '2', '+', '4', '+'];
let A = RPN(arr);
A = Math.floor(A);
// 🍎 = ? (string)
// such that A = 6 (number)

Вот интересная задача, в которой нам нужно исправить только одну ошибку 🍎. Это легкая задача. Чтобы решить эту проблему, мы должны взглянуть на среду, в которой возникла ошибка:

if (token === '*') {
  stack.push(b * a);
} else if (token === '/') {
  stack.push(b / a);
} else if (token === '+') {
  stack.push(b + a);
} else if (token === 🍎) {
  stack.push(b - a);
}

Обратите внимание, что токен - это некоторая строка, которая представляет операцию (*, /, + и 🍎), операция push под ней показывает ее фактическую операцию, поэтому 🍎 должно быть -.

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

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