Nous définissons l' hyper-moyenne d'un tableau / liste (de nombres) la moyenne arithmétique des sommes de ses préfixes.
Par exemple, l'hyper-moyenne de la liste [1, 4, -3, 10]
est calculée de la manière suivante:
Nous obtenons les préfixes:
[1], [1, 4], [1, 4, -3], [1, 4, -3, 10]
.Somme chaque:
[1, 5, 2, 12]
.Et maintenant obtenir la moyenne arithmétique des éléments dans cette liste:
(1 + 5 + 2 + 12) / 4 = 5
.
Un pseudo-élément d'un tableau est un élément dont la valeur est strictement inférieure à son hyper-moyenne. Par conséquent, les pseudo-éléments de notre liste d'exemples sont 1
, 4
et -3
.
Étant donné une liste de nombres à virgule flottante, votre tâche consiste à renvoyer la liste des pseudo-éléments.
Vous n'avez pas à vous soucier des inexactitudes en virgule flottante.
La liste d'entrée ne sera jamais vide et peut contenir à la fois des entiers et des flottants. Si mentionné, les entiers peuvent être pris comme des flottants (avec
<integer>.0
)Vous pouvez supposer que les chiffres correspondent à la langue de votre choix, mais n'en abusez pas.
Facultativement, vous pouvez également prendre la longueur du tableau en entrée.
Il s'agit de code-golf , donc les règles standard pour le tag s'appliquent. Le code le plus court en octets ( dans chaque langue ) gagne!
Cas de test
Entrée -> Sortie [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]
la source
Réponses:
MATL , 8 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
05AB1E ,
98 octets-1 octets grâce à Magic Octopus Urn
Essayez-le en ligne!
05AB1E , 6 octets
Utilisation de la nouvelle
ÅA
commande.Essayez-le en ligne!
la source
ηOO¹g/›Ï
pour 8; ça commence aussi parnOO!
.Japt v2.0a0,
121110 octetsEssaye-le
Explication
Entrée implicite du tableau
U
.Filter (
f
) le tableau en vérifiant si chaque élément est inférieur à ...U
cumulativement réduit (å
) en additionnant ...Avec le tableau résultant à son tour réduit par sommation ...
Et divisé par la longueur (
l
) deU
.Sortie implicite du tableau résultant.
la source
Python 3 avec Numpy , 48 octets
L'entrée et la sortie sont des tableaux Numpy. Essayez-le en ligne!
la source
cumsum
!Gelée , 9 octets
Essayez-le en ligne!
la source
<Ðf@
devrait - il plutôt l'être<Ðḟ@
?+\S÷L
calcule tout d'abord l'hyper-moyenne, puis le<Ðf@
met comme argument de droite et<
retournera1
si un élément est un pseudo-élément, filtrant essentiellement les pseudo-éléments au lieu de filtrer les sortir.Python 2 ,
78767166 octets-7 octets grâce à M. Xcoder.
Essayez-le en ligne!
la source
range(len(l))
etl[:i+1]
pour -2 octets (non testé)x>sum(...)
dex<sum(...)
pour être valable, encore 76 octets<s>68</s>
solution évidente de 66 octets: PHaskell, 39 octets
Essayez-le en ligne!
Malheureusement ,
length
est de typeInt
, donc je ne peux pas l' utiliser avec la division à virgule flottante/
et je dois utiliser une solution de contournement:sum(1<$l)
.la source
Husk ,
109 octetsMerci @Zgarb d'avoir joué 1 octet au golf!
Essayez-le en ligne!
Non golfé / Explication
la source
f</L⁰Σ∫⁰⁰
est de 9 octets, mais trois arguments lambda semblent maladroits.JavaScript (ES6),
565552 octetsEssaye-le
la source
Java 8, 81 octets
Cette expression lambda accepte un
List<Float>
et le mute. L'itérateur de la liste d'entrée doit prendre en charge la suppression (c'estArrayList
le cas, par exemple). Attribuer àConsumer<List<Float>>
.Lambda non golfé
Essayez-le en ligne
Remerciements
la source
t/=l;
et en changeantif(n<t)
pourif(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 octets).C # (Mono) , 95 octets
Essayez-le en ligne!
la source
Python 3 , 72 octets
Essayez-le en ligne!
la source
filter
gagner la compréhension habituelle des listes.Python 3 , 76 octets
L'entrée et la sortie sont des listes de nombres. Essayez-le en ligne!
Cela fonctionne également en Python 2 (avec le remplacement évident de la
print
syntaxe dans le pied de page).la source
Perl 6 , 31 octets
Essayez-le en ligne!
la source
Pyth - 10 octets
Essayez-le en ligne ici .
la source
Pyth,
1211 octets-1 octet merci à M. Xcoder
Essayez-le en ligne!
la source
f<T.OsM._QQ
Perl 5 , 51 + 1 (-a) = 52 octets
Essayez-le en ligne!
la source
PHP, 84 octets
prend l'entrée des arguments de ligne de commande. Courez avec
-nr
ou essayez-le en ligne .résumer les listes partielles équivaut à résumer chaque élément multiplié par le nombre d'éléments suivants +1 → pas besoin de jongler avec des fonctions de tableau volumineuses. Mais c'est encore long.
la source
Röda ,
464139 octetsEssayez-le en ligne!
la source
J, 15 octets
Essayez-le en ligne! Attend un tableau de style J (les négatifs représentés en utilisant
_
au lieu de-
et les éléments séparés par des espaces - voir le lien TIO pour des exemples).Je ne sais pas s'il existe un moyen de supprimer les parenthèses autour de la moyenne (
+/%#
), mais la suppression de cela et la casquette serait la première chose que j'essaierais de faire pour jouer au golf plus loin.Explication
Parfois, J lit comme (obscurci) l'anglais.
la source
#~]<1#.+/\%#
R , 31 octets
Essayez-le en ligne!
la source
Mathematica, 35 octets
Function
qui attend une liste de nombres comme premier argument#
et la longueur de la liste comme deuxième argument#2
.#.Range[#2,1,-1]/#2
prend le produit scalaire de la liste d'entrée#
et la listeRange[#2,1,-1] == {#2,#2-1,...,1}
, puis divise par la longueur#2
. Ensuite, nous renvoyons lesCases
x_
dans la liste d'entrée#
qui sont inférieurs à l'hyper-moyenne.Sans la longueur comme deuxième argument, nous avons besoin de
6
plus d'octets:la source
K (oK) , 26 octets
Solution:
Essayez-le en ligne!
Exemples:
Explication:
Interprétée de droite à gauche. Lutté avec un moyen court d'extraire des préfixes:
Remarques:
Version alternative prenant la longueur de l'entrée comme paramètre ( solution à 25 octets):
la source
TI-Basic, 9 octets
la source