Kami mendefinisikan hiper-rata-rata dari array / daftar (angka) rata-rata aritmatika dari jumlah awalannya.
Misalnya, hiper-rata-rata daftar [1, 4, -3, 10]
dihitung dengan cara berikut:
Kami mendapatkan awalan:
[1], [1, 4], [1, 4, -3], [1, 4, -3, 10]
.Jumlah masing-masing:
[1, 5, 2, 12]
.Dan sekarang mendapatkan mean aritmetik dari unsur-unsur dalam daftar ini:
(1 + 5 + 2 + 12) / 4 = 5
.
Sebuah pseudo-elemen dari sebuah array adalah elemen yang nilainya ketat lebih rendah dibandingkan hiper-rata. Karenanya, elemen pseudo dari daftar contoh kita adalah 1
, 4
dan -3
.
Diberikan daftar angka floating-point, tugas Anda adalah mengembalikan daftar elemen semu.
Anda tidak perlu khawatir tentang ketidakakuratan floating-point.
Daftar input tidak akan pernah kosong dan mungkin berisi bilangan bulat dan float. Jika disebutkan, bilangan bulat dapat dianggap sebagai mengapung (dengan
<integer>.0
)Anda dapat berasumsi bahwa angka-angka itu sesuai dengan bahasa pilihan Anda, tetapi tolong jangan menyalahgunakannya dengan cara apa pun.
Secara opsional, Anda dapat mengambil panjang array sebagai input juga.
Ini kode-golf , jadi aturan standar untuk tag berlaku. Kode terpendek dalam byte ( dalam setiap bahasa ) menang!
Uji Kasus
Input -> Output [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]
sumber
Jawaban:
MATL , 8 byte
Cobalah online!Atau verifikasi semua kasus uji .
Penjelasan
sumber
05AB1E ,
98 byte-1 byte, terima kasih kepada Magic Octopus Urn
Cobalah online!
05AB1E , 6 byte
Menggunakan
ÅA
perintah baru .Cobalah online!
sumber
ηOO¹g/›Ï
untuk 8; juga dimulai dengannOO!
.Japt v2.0a0,
121110 byteMenguji
Penjelasan
Input array secara implisit
U
.Saring (
f
) array dengan memeriksa apakah setiap elemen kurang dari ...U
dikurangi secara kumulatif (å
) dengan menjumlahkan ...Dengan array yang dihasilkan pada gilirannya dikurangi dengan menjumlahkan ...
Dan dibagi dengan panjang (
l
) dariU
.Secara implisit menampilkan array yang dihasilkan.
sumber
Python 3 dengan Numpy , 48 byte
Input dan output adalah array Numpy. Cobalah online!
sumber
cumsum
!Jelly , 9 byte
Cobalah online!
sumber
<Ðf@
seharusnya sebaliknya<Ðḟ@
?+\S÷L
menghitung hiper-rata-rata, kemudian<Ðf@
menempatkannya sebagai argumen yang tepat dan<
akan kembali1
jika suatu elemen adalah elemen pseudo, pada dasarnya memfilter untuk elemen pseudo alih-alih memfilter mereka keluar.Python 2 ,
78767166 byte-7 byte terima kasih kepada Tn. Xcoder.
Cobalah online!
sumber
range(len(l))
danl[:i+1]
untuk -2 byte (tidak diuji)x>sum(...)
agarx<sum(...)
valid, masih 76 byte<s>68</s>
solusi 66 byte yang jelas : PHaskell, 39 byte
Cobalah online!
Sayangnya
length
adalah tipeInt
, jadi saya tidak bisa menggunakannya dengan pembagian floating titik/
dan saya harus menggunakan solusi:sum(1<$l)
.sumber
Husk,
109 bytesThanks @Zgarb for golfing off 1 byte!
Try it online!
Ungolfed/Explanation
sumber
f</L⁰Σ∫⁰⁰
is 9 bytes, but three lambda arguments feels clunky.JavaScript (ES6),
565552 bytesTest it
sumber
Java 8, 81 bytes
This lambda expression accepts a
List<Float>
and mutates it. The input list's iterator must support removal (ArrayList
's does, for example). Assign toConsumer<List<Float>>
.Ungolfed lambda
Try It Online
Acknowledgments
sumber
t/=l;
and changeif(n<t)
toif(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
Try it online!
sumber
Python 3, 72 bytes
Try it online!
sumber
filter
would win over the usual list comprehension.Python 3, 76 bytes
Input and output are lists of numbers. Try it online!
This works in Python 2 too (with the obvious replacement for
print
syntax in the footer).sumber
Perl 6, 31 bytes
Try it online!
sumber
Pyth - 10 bytes
Try it online here.
sumber
Pyth,
1211 bytes-1 byte thanks to Mr. Xcoder
Try it online!
sumber
f<T.OsM._QQ
Perl 5, 51 + 1 (-a) = 52 bytes
Try it online!
sumber
PHP, 84 bytes
takes input from command line arguments. Run with
-nr
or try it online.summing up the partial lists is the same as summing up each element multiplied with the number of following elements +1 → no need to juggle with bulky array functions. It´s still long, though.
sumber
Röda,
464139 bytesTry it online!
sumber
J, 15 bytes
Try it online! Expects a J-style array (negatives represented using
_
instead of-
and elements separated by spaces -- see the TIO link for examples).I don't know if there's a way to remove the parentheses around the mean (
+/%#
) but removing that and the cap would be the first thing I'd try to do to golf this further.Explanation
Sometimes J reads like (obfuscated) English.
sumber
#~]<1#.+/\%#
R, 31 bytes
Try it online!
sumber
Mathematica, 35 bytes
Function
which expects a list of numbers as the first argument#
and the length of the list as the second argument#2
.#.Range[#2,1,-1]/#2
takes the dot product of the input list#
and the the listRange[#2,1,-1] == {#2,#2-1,...,1}
, then divides by the length#2
. Then we return theCases
x_
in the input list#
which are less than the hyper-average.Without the length as a second argument, we need
6
more bytes:sumber
K (oK), 26 bytes
Solution:
Try it online!
Examples:
Explanation:
Interpretted right-to-left. Struggled with a short way to extract prefixes:
Notes:
Alternative version taking length of input as parameter (25 byte solution):
sumber
TI-Basic, 9 bytes
sumber