Задача про сейф: есть круглый барабан со значениями от 0 до 99, стрелка изначально стоит на 50. Положительные числа крутят по часовой стрелке, отрицательные — против. Дан входной массив чисел, нужно определить финальную позицию стрелки после всех операций.

Суммируйте повороты с начальной позицией 50 по модулю 100, отдельно нормализуя отрицательный остаток.

Короткий ответ

Что ответить на собеседовании

Суммируйте повороты с начальной позицией 50 по модулю 100, отдельно нормализуя отрицательный остаток.

Подробный разбор

Ответ с пояснениями

Суммируйте повороты с начальной позицией 50 по модулю 100, отдельно нормализуя отрицательный остаток.

Предполагаем целочисленные повороты в пределах безопасных чисел JavaScript. Уменьшаем каждый шаг по модулю, чтобы не накапливать слишком большую сумму.

function safePosition(turns) {
  let position = 50;
  for (const turn of turns) {
    if (!Number.isSafeInteger(turn)) throw new TypeError('Нужен целый поворот');
    position = ((position + turn % 100) % 100 + 100) % 100;
  }
  return position;
}

Пустой массив даёт 50, поворот -60 — 90, полный оборот не меняет позицию. Время O(n), дополнительная память O(1).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее