Ada beberapa cara dalam matematika, seperti rata-rata aritmatika, rata-rata geometris, dan banyak lainnya ...
Definisi dan Tugas
Perhatikan bahwa ini adalah definisi untuk dua bilangan bulat positif *:
The Root Mean Square adalah akar kuadrat dari jumlah kuadrat mereka dibelah dua ( ).
The mean aritmetik adalah jumlah mereka, dibelah dua ( ).
The rata geometris adalah akar kuadrat dari produk mereka ( ).
The mean harmonik adalah 2 dibagi dengan jumlah invers mereka ( = ).
Dengan diberi dua bilangan bulat a dan b sedemikian rupa sehingga a, b ∈ [1, + ∞) , jumlah rata-rata yang disebutkan di atas a dan b . Jawaban Anda harus akurat untuk setidaknya 3 tempat desimal, tetapi Anda tidak perlu khawatir tentang kesalahan presisi pembulatan atau titik mengambang.
Uji Kasus
a, b -> Output 7, 6 -> 25.961481565148972 10, 10 -> 40 23, 1 -> 34.99131878607909 2, 4 -> 11.657371451581236 345, 192 -> 1051.7606599443843
Anda dapat melihat hasil yang benar untuk lebih banyak kasus uji menggunakan program ini . Ini adalah kode-golf , jadi pengiriman terpendek yang valid yang mengikuti aturan standar akan menang.
* Ada banyak cara lain, tetapi untuk tujuan tantangan ini kita akan menggunakan yang disebutkan di bagian "Definisi".
sumber
Jawaban:
Haskell , 48 byte
Cobalah online!
Ini menggunakan fakta bahwa akar kuadrat, aritmatika, harmonik, dan rata-rata geometrik adalah semua kasus khusus dari rata
((a**p+b**p)/2)**(1/p)
- rata umum untukp=2,1,-1,0
. Rerata geometris menggunakan batasp->0+
, yang diperkirakanp=1e-9
cukup untuk presisi.sumber
Mathematica , 37 byte
-2 byte terima kasih kepada Martin Ender. -6 bytes berkat Jenny_mathy dan fungsi reusability berkat JungHwan Min.
Cobalah online!
Mathematica , 55 byte
Cobalah online!
¯ \ _ (ツ) _ / ¯
sumber
((#^2+#2^2)/2)^.5+(#+#2)/2+(#1#2)^.5+2#*#2/(#+#2)&
((#^2+#2^2)/2)^.5+(+##)/2+(1##)^.5+2/(1/#+1/#2)&
(((s=+##)^2-2##)/2)^.5+s/2+(1##)^.5+2##/s&
(2(s=+##/2)^2-t)^.5+s+(t=1##)^.5+t/s&
(t=1##)^.5+(2(s=+##/2)^2-t)^.5+s+t/s&
. Hanya untuk membuatnya lebih mudah untuk menggunakan kembali fungsi (tanpa harus berjalanClear@t
sebelum setiap iterasi).Python 3 , 57 byte
Cobalah online!
sumber
<<1
akan benar memotong ke integer ketikaa
danb
yang paritas berlawanan.>>1
./2
luar yang mengkompensasi ini. Trik yang bagus.R , 52 byte
Cobalah online!
sumber
Haskell , 48 byte
Cobalah online!
Penjelasan:
s/2 = (a+b)/2
: Mean aritmatika.sqrt(s^2/2-p) = sqrt((a^2+2*a*b+b^2)/2-a*b) = sqrt((a^2+b^2)/2)
: Root mean square.sqrt p = sqrt(a*b)
. Mean geometrik.2*p/s = 2*a*b/(a+b)
. Mean harmonik.sumber
Oktaf ,
444241 byteCobalah online!
Perhatikan bahwa TIO tidak memiliki paket sinyal yang diinstal, jadi saya mendefinisikan
rms()
di header. Di Octave Online , Anda dapat mencobanya jika Andapkg load nan
. Saya tidak yakin apakah ada penerjemah online yang memuatnya secara default, tetapi sebagian besar sistem akan memuat paket ini secara default.Terima kasih kepada Tom Carpenter karena menemukan kesalahan kecil 2 byte.
Ini mendefinisikan fungsi anonim, mengambil input sebagai vektor
n=[a,b]
. Kami kemudian menggunakan penugasan sebaris untuk mengurangi perhitungan HM menjadi adilz/q
.sumber
f=
dalam kode, sehingga membuatnya menjadi 42 byte. (yang tentu saja mengarah ke "dicoret 44 sepertinya 44") - Cobalah online!^.5
menyimpan byte lebih darisqrt
. Juga, hapusf=
dari bagian kode di tautanJelly , 17 byte
Cobalah online!
sumber
PḤ÷S,µ³²Æm,P½,µÆmFS
(19 byte) - Saya pikir itu layak disebut, mungkin itu sumber inspirasi. Sunting: > _> Sekarang saya sadar saya bisa menggunakan+
saja,
½
satu, dan menyimpan satu byte.PḤ÷S
dapat digantikan oleh:İSHİ
05AB1E ,
1816 byte-2 byte terima kasih kepada Erik the Outgolfer
Penjelasan:
Cobalah online!
sumber
nO;t¹O;¹Pt2¹zO/O
[a, b]
.Sekam , 19 byte
Cobalah online!
-1 terima kasih H.PWiz .
sumber
ö√½Σm□
bisaȯ√½ṁ□
MATL ,
211817 byteCobalah online!
-3 byte terima kasih kepada Luis Mendo.
Penjelasan
sumber
Ohm v2 , 16 byte
Cobalah online!
Penjelasan
... jika Ohm memiliki semacam mode verbose. : P
sumber
TI-Basic (TI-84 Plus CE),
2725 byte-2 byte dari Scrooble
Membawa daftar dua angka
Ans
, dan secara implisit mengembalikan jumlah dari empat cara; misalnya lari dengan{7,6}:prgmNAME
untuk mendapatkan25.96148157
.Penjelasan:
√(sum(Ans2)/2)
: 8 byte: root mean squaremean(Ans)
:53 byte: rata-rata aritmatika (lamasum(Ans)/2
:)2prod(Ans)/sum(Ans)
: 8 byte: rata-rata harmonik√(prod(Ans
: 3 byte: rerata geometris+3 byte untuk 3
+
essumber
sum(Ans)/2)
.mean(
builtin.SOGL V0.12 , 22 byte
Coba Di Sini!
sumber
Dyalog APL , 44 byte
Cobalah online!
Dyadic dfns dengan
a
di kiri danb
di kanan.sumber
JavaScript, 47 byte
cukup sepele
Tampilkan cuplikan kode
sumber
Java 8, 63 byte
Mengambil parameter sebagai
Double
dan keluaran sebagaiDouble
.Coba di sini.
Atau (juga 63 byte ):
Mengambil parameter sebagai
Integer
dan keluaran sebagaiDouble
.Coba di sini.
sumber
Python 2 , 58 byte
Cobalah online!
Mengambil input sebagai mengambang
sumber
ARBLE ,
4945 byte-4 byte terima kasih kepada Tn. Xcoder
Cobalah online!
sumber
Sebenarnya , 15 byte
Cobalah online!
Yay Actually memiliki built-in untuk Root Square Mean!
sumber
Julia ,
4947 byteCobalah online!
sumber
Groovy, 54 byte
-2 Terima kasih kepada Tn. Xcoder untuk hasil edit yang membuat saya merasa bodoh.
sumber
a**2
dengana*a
danb**2
denganb*b
C # (.NET Core) , 76 byte
+13 byte untuk
using System;
Cobalah online!
sumber
using System;
dan menghapus keduanyaSystem.
. PS: Jika Anda ingin cara yang lebih membosankan (dengan sama persis byte-hitungan 76):using System;a=>b=>(a+b+Math.Sqrt(a*a+b*b<<1))/2+Math.Sqrt(a*b)+2d*a*b/(a+b)
. ;)Jq 1,5 , 76 byte
Diperluas
Cobalah online!
sumber