Diberikan daftar angka floating point, distandarisasi .
Detail
- Daftar adalah standar jika rata-rata dari semua nilai adalah 0, dan standar deviasi adalah 1. Salah satu cara untuk menghitung ini dengan terlebih dahulu menghitung mean dan standar deviasi sebagai
dan kemudian menghitung standarisasi dengan mengganti setiap dengan .
- Anda dapat mengasumsikan bahwa input berisi setidaknya dua entri berbeda (yang menyiratkan ).
- Perhatikan bahwa beberapa implementasi menggunakan standar deviasi sampel, yang tidak sama dengan deviasi standar populasi kita gunakan di sini.
- Ada jawaban CW untuk semua solusi sepele .
Contohnya
[1,2,3] -> [-1.224744871391589,0.0,1.224744871391589]
[1,2] -> [-1,1]
[-3,1,4,1,5] -> [-1.6428571428571428,-0.21428571428571433,0.8571428571428572,-0.21428571428571433,1.2142857142857144]
(Contoh-contoh ini telah dihasilkan dengan skrip ini .)
CW untuk semua entri sepele
Python 3 + scipy, 31 byte
Cobalah online!
Oktaf / MATLAB, 15 byte
Cobalah online!
sumber
APL (Dyalog Classic) ,
212019 byteCobalah online!
⊢÷⌹
adalah jumlah kuadrat⊢÷⌹×≢
adalah jumlah kuadrat dibagi dengan panjangsumber
MATL , 10 byte
Cobalah online!
Penjelasan
sumber
APL + WIN,
41,3230 byte9 byte disimpan berkat Erik + 2 lebih banyak berkat ngn
Meminta vektor angka dan menghitung standar deviasi dan elemen standar dari vektor input
sumber
x←v-(+/v)÷⍴v←⎕
dan kemudian melakukannyax÷((+/x*2)÷⍴v)*.5
?1 2 3+,4
← →1 2 3+4
)? jika ya, Anda dapat menulis ulang(+/x*2)÷⍴v
sebagai+/x×x÷⍴v
R + pryr,
5352 byte-1 byte menggunakan
sum(x|1)
bukanlength(x)
seperti yang terlihat dalam solusi @Robert S.Untuk menjadi bahasa yang dibangun untuk ahli statistik, saya kagum bahwa ini tidak memiliki fungsi bawaan. Setidaknya tidak ada yang bisa kutemukan. Bahkan fungsi
mosaic::zscore
tidak menghasilkan hasil yang diharapkan. Ini kemungkinan karena menggunakan standar deviasi populasi daripada standar deviasi sampel.Cobalah online!
sumber
<-
menjadi a=
untuk menghemat 1 byte.scale
rapi!n
sekali Anda dapat menggunakannya secara langsung untuk 38 byteTcl , 126 byte
Cobalah online!
sumber
Jelly , 10 byte
Cobalah online!
Ini tidak lebih pendek, tetapi fungsi penentu Jelly
ÆḊ
juga menghitung norma vektor.sumber
Mathematica, 25 byte
Fungsi murni. Mengambil daftar angka sebagai input dan mengembalikan daftar angka presisi mesin sebagai output. Perhatikan bahwa
Standardize
fungsi bawaan menggunakan varians sampel secara default.sumber
J , 22 byte
-1 byte berkat Sapi dukun!
Cobalah online!
J ,
3123 byteCobalah online!
sumber
[:(%[:%:1#.*:%#)]-+/%#
tio.run/##y/qfVmyrp2CgYKVg8D/… , saya pikir salah satu topi itu bisa dilepas, tetapi sejauh ini belum beruntung, EDIT: byteshaving yang lebih langsung(-%[:%:1#.-*-%#@[)+/%#
juga ada di 22APL (Dyalog Unicode) ,
3329 byte-4 byte terima kasih kepada @ngn
Cobalah online!
sumber
⍵-m
ke variabel dan menghapusm←
seperti ini:{d÷.5*⍨l÷⍨+/×⍨d←⍵-(+/⍵)÷l←≢⍵}
Haskell,
807568 byteTerima kasih kepada @ flawr untuk saran untuk digunakan
sum(1<$x)
sebagai gantisum[1|_<-x]
dan untuk menyejajarkan maksud, @xnor untuk inlining standar deviasi dan pengurangan lainnya.Diperluas:
sumber
[1|_<-x]
dengan(1<$x)
untuk menyimpan beberapa byte. Itu adalah trik yang bagus untuk menghindarifromIntegral
, yang belum saya lihat sejauh ini!m
.(-x+)
untuk(+(-x))
menghindari orangtua. Sepertinyaf
juga bisa pointfree:,f=(/sum(1<$x))
dans
dapat diganti dengan definisinya.(-x+)
berguna, saya yakin saya akan menggunakannya di masa depanMathGolf , 7 byte
Cobalah online!
Penjelasan
Ini secara harfiah adalah byte demi byte dari jawaban Kevin Cruijssen 05AB1E, tetapi saya menyimpan beberapa byte dari MathGolf yang memiliki 1-byters untuk semua yang diperlukan untuk tantangan ini. Juga jawabannya terlihat cukup bagus menurut saya!
sumber
JavaScript (ES7),
8079 byteCobalah online!
Berkomentar
sumber
Python 3 + numpy , 46 byte
Cobalah online!
sumber
Haskell , 59 byte
Cobalah online!
Tidak menggunakan perpustakaan.
Fungsi helper
%
menghitung jumlahi
kekuatan daftar, yang memungkinkan kita mendapatkan tiga nilai berguna.0%l
adalah panjangnyal
(sebut inin
)1%l
adalah jumlah daril
(sebut inis
)2%l
adalah jumlah kuadrat daril
(sebut inim
)Kita dapat menyatakan skor-z suatu elemen
y
sebagai(Ini adalah ungkapan yang
(y-s/n)/sqrt(v/n-(s/n)^2)
disederhanakan sedikit dengan mengalikan bagian atas dan bawah dengann
.)Kita bisa memasukkan ekspresi
0%l
,1%l
,2%l
tanpa parens karena%
kita mendefinisikan memiliki hak lebih tinggi dari operator aritmatika.(%)i=sum.map(^i)
panjangnya sama dengani%l=sum.map(^i)l
. Menjadikannya lebih bebas poin tidak membantu. Mendefinisikannya sepertig i=...
kehilangan byte saat kita menyebutnya. Meskipun%
bekerja untuk daftar mana pun tetapi kami hanya menyebutnya dengan daftar input masalah, tidak ada kerugian byte dalam memanggilnya dengan argumenl
setiap kali karena panggilan dua argumeni%l
tidak lebih dari satu argumen satug i
.sumber
%
ide itu! Itu terlihat seperti versi diskrit dari momen statistik .K (oK) ,
3323 byte-10 byte berkat ngn!
Cobalah online!
Upaya pertama pada coding (saya tidak berani menyebutnya "golf") di K. Saya cukup yakin itu bisa dilakukan jauh lebih baik (terlalu banyak nama variabel di sini ...)
sumber
(x-m)
dengant
( tio ){
}
tidak perlu - nama parameter implisitnya adalahx
dan telah dilewatkanx
sebagai argumen ( tio )x-+/x
denganx-/x
. argumen kiri untuk-/
berfungsi sebagai nilai awal untuk reduksi ( tio )MATLAB, 26 byte
Trivial-ish,
std(,1)
untuk menggunakan standar deviasi populasisumber
TI-Basic (83 series),
1411 byteMembawa input
Ans
. Misalnya, jika Anda mengetikkan di atasprgmSTANDARD
, maka{1,2,3}:prgmSTANDARD
akan kembali{-1.224744871,0.0,1.224744871}
.Sebelumnya, saya mencoba menggunakan
1-Var Stats
perintah, yang menyimpan standar deviasi populasiσx
, tetapi lebih sedikit kesulitan untuk menghitungnya secara manual.sumber
05AB1E , 9 byte
Port dari jawaban JavaScript @Arnauld , jadi pastikan untuk menghapusnya!
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Jelly , 10 byte
Cobalah online!
sumber
Pyth,
2119 bytesCobalah online di sini .
Sunting: setelah melihat jawaban Kevin , ubah menggunakan rata-rata bawaan untuk hasil dalam. Jawaban sebelumnya:
mc-dJ.OQ@csm^-Jk2QlQ2
sumber
SNOBOL4 (CSNOBOL4) , 229 byte
Cobalah online!
Link adalah versi fungsional dari kode yang membangun array dari STDIN dengan panjangnya dan elemen-elemennya, kemudian menjalankan fungsinya
Z
, dan akhirnya mencetak nilainya.Menentukan fungsi
Z
yang mengembalikan array.The
1.
on line 4 perlu dilakukan titik aritmatika floating benar.sumber
Julia 0.7 , 37 byte
Cobalah online!
sumber
Arang ,
2519 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Menghitungμ dan vektorised kurangi dari masing-masing xsaya .
Menghitungσ , masing-masing vektor dibagi xsaya olehnya, dan output hasilnya.
Sunting: Disimpan 6 byte berkat hanya @ ASCII untuk a) menggunakan
SquareRoot()
bukannyaPower(0.5)
b) memperbaiki vectorisedDivide()
(itu melakukanIntDivide()
sebaliknya) c) membuatPower()
vectorise.sumber