Pengantar:
Dua resistor, R1
dan R2
, secara paralel (dilambangkan R1 || R2
) memiliki resistensi gabungan yang Rp
diberikan sebagai:
atau seperti yang disarankan dalam komentar:
Tiga resistor, R1
, R2
dan R3
secara paralel ( R1 || R2 || R3
) memiliki ketahanan gabungan (R1 || R2) || R3 = Rp || R3
:
atau, lagi seperti yang disarankan dalam komentar:
Formula-formula ini tentu saja dapat diperluas ke sejumlah resistor yang tidak terbatas.
Tantangan:
Ambil daftar nilai resistor positif sebagai input, dan hasilkan resistansi gabungan jika ditempatkan secara paralel di sirkuit listrik. Anda mungkin tidak mengasumsikan jumlah resistor maksimum (kecuali bahwa komputer Anda dapat mengatasinya tentu saja).
Kasus uji:
1, 1
0.5
1, 1, 1
0.3333333
4, 6, 3
1.3333333
20, 14, 18, 8, 2, 12
1.1295
10, 10, 20, 30, 40, 50, 60, 70, 80, 90
2.6117
Kode terpendek di setiap bahasa menang. Penjelasan sangat dianjurkan.
code-golf
math
physics
electrical-engineering
Stewie Griffin
sumber
sumber
Jawaban:
05AB1E ,
53 byteCobalah online!
Penjelasan
sumber
Haskell ,
1816 byteCobalah online!
sumber
foldr1(\r s->r*s/(r+s))
.MATLAB , 14 byte
Dalam MATLABp ⩾ 1 sebagai
norm(...,p)
menghitungp
-norm vektor. Ini biasanya didefinisikan untukTapi untungnya bagi kita, itu juga bekerja untukp = - 1 . (Perhatikan bahwa itu tidak berfungsi dalam Oktaf.)
Jangan coba online!
sumber
Jelly ,
53 byteCobalah online!
Bagaimana?
Awalnya saya lupa formulir ini dari hari-hari teknik elektronik saya ... betapa mudahnya kita lupa.
sumber
İ
diucapkan dengan cara yang samai
diucapkan dalamlist
. Apakah ini cara mengatakan tantangan itu mudah?PowerShell , 22 byte
Cobalah online!
Mengambil input melalui splatting dan menggunakan 1 / jumlah trik terbalik yang sama seperti yang dilakukan banyak orang lain
sumber
Oktaf , 15 byte
Cobalah online!
Berarti harmonik, dibagi dengan
n
. Peasy mudah.sumber
APL (Dyalog Unicode) , 4 byte
Cobalah online!
-1 terima kasih kepada Adám .
sumber
÷1⊥÷
Coba online!1∘⊥
sama dengan+/
untuk vektor ...R , 15 byte
Cobalah online!
Mengikuti prinsip Harmonic Mean yang sama seperti yang terlihat pada jawaban lain.
sumber
JavaScript, 28 byte
Cobalah secara Online!
sumber
Perl 5
-pa -MList::Util=reduce
, 26 byteCobalah online!
sumber
Perl 6 , 14 byte
Cobalah online!
1 / **
adalah fungsi anonim yang mengembalikan daftar kebalikan dari argumennya.1 / *.sum
adalah fungsi anonim lain yang mengembalikan timbal balik dari jumlah elemen argumen daftar. Theo
Operator menyusun dua fungsi.sumber
bash + coreutils, 25 byte
TIO
sumber
Bahasa Wolfram (Mathematica) , 10 byte
Cobalah online!
sumber
HarmonicMean
dan lebih panjang.MathGolf , 3 byte
Sama dengan jawaban lain, menggunakan bawaan1n ) dan M.( x1, . . . , xn) = 11x1+ 1x2+ . . . + 1xn
∩
(Σ
(jumlah):Cobalah online.
sumber
PHP , 51 byte
Timbal balik dari jumlah timbal balik. Masukan adalah
$a
.Cobalah online!
sumber
1/array_reduce($a,fn($c,$i)=>$c+1/$i);
(38 byte). Baca selengkapnya di wiki.php.net/rfc/arrow_functionsJavaScript (ES6), 29 byte
Cobalah online!
atau:
Cobalah online!
Tetapi dengan pendekatan ini, menggunakan
map()
(seperti yang dilakukan Shaggy ) adalah 1 byte lebih pendek.sumber
Python 3 , 30 byte
Cobalah online!
sumber
Perl 5 (-p), 17 byte
Cobalah online!
sumber
x86-64 Kode mesin -
2018 byteInput - Konvensi pemanggilan Windows. Parameter pertama adalah jumlah resistor di
RCX
. Pointer ke resistor ada diRDX
.*ps
instruksi digunakan karena lebih kecil satu byte. Secara teknis, Anda hanya dapat memiliki sekitar 2 ^ 61 resistor tetapi Anda akan kehabisan RAM jauh sebelum itu. Presisi juga tidak bagus, karena kami menggunakanrcpps
.sumber
Java 8, 24 byte
Saya perhatikan belum ada jawaban Java, jadi saya pikir saya akan menambahkannya.
Cobalah online.
Penjelasan:
Menggunakan pendekatan Harmonic Mean yang sama dengan jawaban lain:
sumber
MATL , 5 byte
Cobalah online!
Saya tidak yakin apakah "lakukan dua kali" (
,
) dianggap sebagai satu lingkaran, tetapi ini hanya rata-rata harmonik, dibagi dengann
.Bergantian,
,-1^s
lima byte juga.sumber
Kode mesin Intel 8087 FPU, 19 byte
Ini menggunakan instruksi floating point berbasis stack dalam IBM PC 8087 FPU asli.
Input adalah pointer ke nilai resistor dalam
[SI]
, jumlah resistor dalamCX
. Output adalah nilai presisi tunggal (DD) di[DI]
.sumber
Dart , 42 byte
Cobalah online!
Harus secara eksplisit menentukan
num
jenisnya agak sial, mencegah tipe menyimpulkan, karena itu akan menyimpulkan(dynamic, dynamic) => dynamic
yang tidak dapat menghasilkan dua kali lipat untuk beberapa alasansumber
PHP , 40 byte
Cobalah online!
Tes: Coba online!
Mirip dengan solusi Yimin Rong tetapi tanpa built-in dan semua byte program termasuk dalam jumlah byte.
sumber
Python 3,
5844 byteFungsi rekursif. Membutuhkan argumen untuk dilewati tanpa dibongkar, seperti:
atau
Penjelasan:
sumber
Arang , 7 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Bekerja dengan menghitung arus yang ditarik oleh masing-masing resistor ketika 1V diterapkan, mengambil total, dan menghitung hambatan yang akan menarik arus itu ketika 1V diterapkan. Penjelasan:
sumber
J , 6 byte
Cobalah online!
sumber
+/&.:%
[MATLAB], 15 byte
Satu byte lebih dari jawaban sempurna flawr , tapi saya harus menggunakan fungsi lain jadi begini:
Ini agak eksplisit, ini menjumlahkan kebalikan dari resistensi, kemudian membalikkan jumlah untuk menghasilkan resistensi paralel yang setara.
sumber
Keempat (gforth) , 49 byte
Cobalah online!
Input adalah alamat memori dan panjang array (digunakan sebagai array dadakan, karena Forth tidak memiliki konstruk array bawaan)
Menggunakan metode jumlah terbalik karena sebagian besar jawaban lainnya
Penjelasan Kode
sumber
expl3 (lapisan pemrograman LaTeX3), 65 byte
Berikut ini mendefinisikan fungsi yang mencetak hasil ke terminal (sayangnya
expl3
memiliki nama fungsi yang sangat verbose):Script lengkap yang dapat dijalankan dari terminal termasuk semua case uji serta pengaturan untuk masuk
expl3
:Jika dijalankan dengan
pdflatex <filename>
yang berikut ini adalah output konsol:Penjelasan
\fp_show:n
: mengevaluasi argumennya sebagai ekspresi titik mengambang dan mencetak hasilnya pada terminal, setiap makro yang dapat diperluas diperluas selama proses itu.\clist_map_function:nN
: mengambil dua argumen, daftar yang dipisahkan koma dan fungsi / makro, jika dipanggil like\clist_map_function:nN { l1, l2, l3 } \foo
itu diperluas ke sesuatu seperti\foo{l1}\foo{l2}\foo{l3}
. Dalam kasus kami, bukan\foo
makro\2
yang digunakan, yang diperluas+1/
sehingga ekspresi diperluas ke+1/{l1}+1/{l2}+1/{l3}
sumber