Ваша задача - взять массив чисел и вещественное число и вернуть значение в этой точке массива. Массивы начинаются с и считаются через интервалы . Дело в том, что мы на самом деле собираемся интерполировать между элементами с учетом «индекса». Например:
Index: 1π 2π 3π 4π 5π 6π
Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ]
Поскольку это , мы должны сделать обязательную тригонометрию, поэтому мы будем использовать косинусную интерполяцию по следующей формуле:
где:
- вход "индекс"
- - значение элемента непосредственно перед индексом
- - значение элемента сразу после «индекса»
- принимает угол в радианах
пример
Учитывая [1.3, 3.7, 6.9], 5.3:
Индекс 5.3 находится между и , поэтому для 1.3 будет использоваться, а для before
3.7 - after
. Подставив его в формулу, получим:
Который выходит на 3.165
Ноты
- Ввод и вывод могут быть в любом удобном формате
- Вы можете предположить, что введенное число больше и меньше
array length
* - Вы можете предположить, что входной массив будет иметь длину не менее 2 элементов.
- Ваш результат должен иметь как минимум две десятичные точки с точностью до 0,05 и поддерживать числа до 100 для этой точности / точности. (поплавки одинарной точности более чем достаточны для удовлетворения этого требования)
Счастливого гольфа!