Su tarea es tomar una matriz de números y un número real y devolver el valor en ese punto de la matriz. Las matrices comienzan en y se cuentan en intervalos . La cuestión es que en realidad vamos a interpolar entre elementos dados el "índice". Como ejemplo:
Index: 1π 2π 3π 4π 5π 6π
Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ]
Debido a que es , tenemos que hacer la trigonometría obligatoria, por lo que utilizaremos la interpolación de coseno utilizando la siguiente fórmula:
dónde:
- es el "índice" de entrada
- es el valor del elemento inmediatamente anterior al "índice"
- es el valor del elemento inmediatamente después del "índice"
- toma su ángulo en radianes
Ejemplo
Dado [1.3, 3.7, 6.9], 5.3:
El índice 5.3 está entre y , por lo que 1.3 se usará para y 3.7 se usará para . Poniéndolo en la fórmula, obtenemos:before
after
Que sale a 3.165
Notas
- La entrada y salida pueden estar en cualquier formato conveniente
- Puede suponer que el número de entrada es mayor que y menor que *
array length
- Puede suponer que la matriz de entrada tendrá al menos 2 elementos de longitud.
- Su resultado debe tener al menos dos puntos decimales de precisión, ser exacto dentro de 0.05 y admitir números hasta 100 para esta precisión / exactitud. (los flotadores de precisión simple son más que suficientes para cumplir con este requisito)
¡Feliz golf!