Tengo que dar una puntuación [0..100] a algunas secuencias numéricas formadas por números del conjunto {1..100}. Permítanme dar algunos ejemplos:
1. [40, 40, 40, 40, 50, 55] 2. [73, 76, 80, 82] 3. [20, 20, 13, 13, 13, 13] 4. [8, 9, 8, 12, 13, 12] 5. [28, 28, 33, 30, 33, 30]
Parámetros de puntuación:
- La secuencia debe ir aumentando para puntuar mejor. Por ejemplo: en el siguiente ejemplo 1 es mejor que 2. 3 es el peor. (Restricción más fuerte)
1. [40, 41, 42, 45] 2. [40, 41, 45, 42] 3. [45, 42, 41, 40]
- Una secuencia es mejor que otra si la diferencia entre los números es muy baja. Cuanto más baja, mejor. Por ejemplo: en el siguiente ejemplo 1 es mejor que 2.
1. [40, 41, 42, 45] 2. [0, 15, 30, 45]
Algunos intentos:
- Comprobando el primer elemento y el último. Cuando el segundo es mayor que el primero: cuanto mayor sea la diferencia, mayor será la puntuación.
- La desviación estándar da resultados interesantes, pero todavía no excelentes (la secuencia anterior está ordenada de esta manera)
Escenario
Permítanme explicar el contexto, porque entiendo que no tiene mucho sentido lo que he preguntado. Un número en una secuencia representa el porcentaje actual de artículos solicitados de una tienda online (no se sabe cuántos artículos están realmente a la venta).
Por ejemplo [0,50,51,100]
significa que en el momento 1 nadie compró este artículo, en el momento 2 se vendió el 50% de este producto, y así sucesivamente... Digamos que la secuencia anterior es real. La secuencia se calcula en un intervalo de 2 minutos: ¡esto significa que se vendieron al menos 100 elementos en 8 minutos!
Consideremos ahora la secuencia muy similar [0,50,50,100]
La cifra de la tienda: sólo cambia un número, pero éste no es tan bueno como el anterior, porque la tienda probablemente sólo vende 2 artículos y 8 minutos para vender 2 artículos no es tan excepcional.
¿Qué función puedo utilizar para optimizar la puntuación?