Код Middle Анимации и жесты обновлено

Интерполяция как в Reanimated

Условие

Напишите interpolate(value, input, output, extrapolate): линейная интерполяция по точкам. input строго возрастает, output той же длины (не меньше 2 точек). Внутри диапазона значение находится на нужном отрезке. За пределами input:

  • "extend": продолжить крайний отрезок;
  • "clamp": вернуть крайнее значение output;
  • "identity": вернуть value как есть.

Результат округлите до 6 знаков после запятой (Math.round(x * 1e6) / 1e6).

Примеры

interpolate(0.5, [0, 1], [0, 100], "clamp") // 50
interpolate(0, [0, 1], [1, 0], "clamp") // 1
interpolate(0.25, [0, 1], [1, 0], "clamp") // 0.75

Как подойти

Подсказки: 2
  1. Сначала обработайте выход за границы по режиму.
  2. Найдите индекс отрезка i, где input[i] <= value <= input[i+1]; для extend возьмите крайний отрезок.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.