Definimos el hiper-promedio de una matriz / lista (de números) la media aritmética de las sumas de sus prefijos.
Por ejemplo, el hiper-promedio de la lista [1, 4, -3, 10]
se calcula de la siguiente manera:
Obtenemos los prefijos:
[1], [1, 4], [1, 4, -3], [1, 4, -3, 10]
.Resumiendo cada uno:
[1, 5, 2, 12]
.Y ahora obtener la media aritmética de los elementos de esta lista:
(1 + 5 + 2 + 12) / 4 = 5
.
Un pseudo-elemento de una matriz es un elemento cuyo valor es estrictamente más bajo que su hiper-promedio. Por lo tanto, los pseudoelementos de nuestra lista de ejemplos son 1
, 4
y -3
.
Dada una lista de números de punto flotante, su tarea es devolver la lista de pseudoelementos.
No tiene que preocuparse por las imprecisiones de punto flotante.
La lista de entrada nunca estará vacía y puede contener números enteros y flotantes. Si se menciona, los enteros se pueden tomar como flotantes (con
<integer>.0
)Puede suponer que los números se ajustan a su idioma de elección, pero no abuse de eso de ninguna manera.
Opcionalmente, también puede tomar la longitud de la matriz como entrada.
Este es el código de golf , por lo que se aplican las reglas estándar para la etiqueta. ¡El código más corto en bytes ( en cada idioma ) gana!
Casos de prueba
Entrada -> Salida [10.3] -> [] [5.4, 5.9] -> [5.4, 5.9] [1, 4, -3, 10] -> [1, 4, -3] [-300, -20.9, 1000] -> [-300, -20.9] [3.3, 3.3, 3.3, 3.3] -> [3.3, 3.3, 3.3, 3.3] [-289.93, 912.3, -819.39, 1000] -> [-289.93, -819.39]
fuente
Respuestas:
MATL , 8 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
05AB1E ,
98 bytes-1 bytes gracias a Magic Octopus Urn
Pruébalo en línea!
05AB1E , 6 bytes
Usando el nuevo
ÅA
comando.Pruébalo en línea!
fuente
ηOO¹g/›Ï
para 8; También comienza connOO!
.Japt v2.0a0,
121110 bytesPruébalo
Explicación
Entrada implícita de matriz
U
.Filtre (
f
) la matriz comprobando si cada elemento es menor que ...U
reducido acumulativamente (å
) sumando ...Con la matriz resultante a su vez reducida sumando ...
Y dividido por la longitud (
l
) deU
.Salida implícita de la matriz resultante.
fuente
Python 3 con Numpy , 48 bytes
La entrada y la salida son matrices Numpy. Pruébalo en línea!
fuente
cumsum
!Jalea , 9 bytes
Pruébalo en línea!
fuente
<Ðf@
debería ser en su lugar<Ðḟ@
?+\S÷L
calcula el hiper-promedio, luego lo<Ðf@
coloca como su argumento correcto y<
regresará1
si un elemento es un pseudo-elemento, esencialmente filtrando los pseudo-elementos en lugar de filtrarlo. ellos afuera.Python 2 ,
78767166 bytes-7 bytes gracias al Sr. Xcoder.
Pruébalo en línea!
fuente
range(len(l))
yl[:i+1]
por -2 bytes (no probado)x>sum(...)
ax<sum(...)
para que sea válido, todavía 76 bytes<s>68</s>
solución obvia de 66 bytes: PHaskell, 39 bytes
Pruébalo en línea!
Por desgracia
length
es de tipoInt
, así que no puedo usarlo con división de coma flotante/
y tengo que usar una solución:sum(1<$l)
.fuente
Casco ,
109 bytes¡Gracias @Zgarb por jugar golf en 1 byte!
Pruébalo en línea!
Ungolfed / Explicación
fuente
f</L⁰Σ∫⁰⁰
es de 9 bytes, pero tres argumentos lambda se sienten torpes.JavaScript (ES6),
565552 bytesPruébalo
fuente
Java 8, 81 bytes
Esta expresión lambda acepta a
List<Float>
y la muta. El iterador de la lista de entrada debe admitir la eliminación (ArrayList
's lo hace, por ejemplo). Asignar aConsumer<List<Float>>
.Lambda sin golf
Pruébalo en línea
Expresiones de gratitud
fuente
t/=l;
y cambiandoif(n<t)
aif(n<t/l)
.a->{float l=0,t=0,u;for(float n:a)t+=n*(a.size()-l++);u=t/l;a.removeIf(n->n>=u);}
(81 bytes).C # (Mono) , 95 bytes
Pruébalo en línea!
fuente
Python 3 , 72 bytes
Pruébalo en línea!
fuente
filter
que ganaría la comprensión habitual de la lista.Python 3 , 76 bytes
Entrada y salida son listas de números. Pruébalo en línea!
Esto también funciona en Python 2 (con el reemplazo obvio de la
print
sintaxis en el pie de página).fuente
Perl 6 , 31 bytes
Pruébalo en línea!
fuente
Pyth - 10 bytes
Pruébelo en línea aquí .
fuente
Pyth,
1211 bytes-1 byte gracias al Sr. Xcoder
Pruébalo en línea!
fuente
f<T.OsM._QQ
Perl 5 , 51 + 1 (-a) = 52 bytes
Pruébalo en línea!
fuente
PHP, 84 bytes
toma datos de los argumentos de la línea de comandos. Corre
-nr
o pruébalo en línea .resumir las listas parciales es lo mismo que resumir cada elemento multiplicado por el número de elementos siguientes +1 → no es necesario hacer malabarismos con funciones de matriz voluminosas. Sin embargo, todavía es largo.
fuente
Röda ,
464139 bytesPruébalo en línea!
fuente
J, 15 bytes
Pruébalo en línea! Espera una matriz de estilo J (negativos representados usando en
_
lugar de-
elementos separados por espacios; consulte el enlace TIO para ver ejemplos).No sé si hay una manera de eliminar los paréntesis alrededor de la media (
+/%#
), pero eliminar eso y la gorra sería lo primero que trataría de hacer para seguir jugando al golf.Explicación
A veces J lee como (ofuscado) inglés.
fuente
#~]<1#.+/\%#
R , 31 bytes
Pruébalo en línea!
fuente
Mathematica, 35 bytes
Function
que espera una lista de números como primer argumento#
y la longitud de la lista como segundo argumento#2
.#.Range[#2,1,-1]/#2
toma el producto punto de la lista de entrada#
y la listaRange[#2,1,-1] == {#2,#2-1,...,1}
, luego se divide por la longitud#2
. Luego devolvemos elCases
x_
en la lista de entrada#
que son menores que el hiper-promedio.Sin la longitud como segundo argumento, necesitamos
6
más bytes:fuente
K (oK) , 26 bytes
Solución:
Pruébalo en línea!
Ejemplos:
Explicación:
Interpretado de derecha a izquierda. Luchó con una forma corta de extraer prefijos:
Notas:
Versión alternativa que toma la longitud de entrada como parámetro ( solución de 25 bytes):
fuente
TI-Basic, 9 bytes
fuente