Einführung:
Zwei Widerstände R1
und R2
parallel (bezeichnet R1 || R2
) haben einen kombinierten Widerstandswert Rp
, der wie folgt angegeben wird:
Drei Widerstände R1
, R2
und R3
parallel ( R1 || R2 || R3
) einen kombinierten Widerstand (R1 || R2) || R3 = Rp || R3
:
oder, wie in den Kommentaren vorgeschlagen:
Diese Formeln können natürlich auf eine unbestimmte Anzahl von Widerständen erweitert werden.
Herausforderung:
Nehmen Sie eine Liste positiver Widerstandswerte als Eingang und geben Sie den kombinierten Widerstand aus, wenn diese in einem Stromkreis parallel geschaltet wurden. Sie dürfen nicht von einer maximalen Anzahl von Widerständen ausgehen (außer dass Ihr Computer dies natürlich kann).
Testfälle:
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
Der kürzeste Code in jeder Sprache gewinnt. Erklärungen sind ausdrücklich erwünscht.
quelle
Antworten:
05AB1E ,
53 BytesProbieren Sie es online!
Erläuterung
quelle
Haskell ,
1816 BytesProbieren Sie es online!
quelle
foldr1(\r s->r*s/(r+s))
.MATLAB , 14 Bytes
In MATLAB wirdp ⩾ 1 als definiert
norm(...,p)
diep
-Norm eines Vektors berechnet . Dies wird normalerweise fürAber zum Glück funktioniert es auch fürp = - 1 . (Beachten Sie, dass es in Octave nicht funktioniert.)
Versuchen Sie es nicht online!
quelle
Gelee ,
53 BytesProbieren Sie es online!
Wie?
Anfangs habe ich dieses Formular aus meiner Zeit als Elektroniker vergessen ... wie leicht wir es vergessen.
quelle
İ
es genausoi
ausgesprochen wird wie inlist
. Ist dies eine Art zu sagen, dass die Herausforderung einfach war?PowerShell , 22 Byte
Probieren Sie es online!
Nimmt Eingaben per Splatting entgegen und verwendet dieselbe 1 / Summe inverser Tricks wie viele andere
quelle
Oktave , 15 Bytes
Probieren Sie es online!
Harmonischer Mittelwert, geteilt durch
n
. Kinderleicht.quelle
APL (Dyalog Unicode) , 4 Bytes
Probieren Sie es online!
-1 danke an Adám .
quelle
÷1⊥÷
Probieren Sie es online!1∘⊥
ist das gleiche wie+/
für Vektoren ...R , 15 Bytes
Probieren Sie es online!
Folgt dem gleichen harmonischen Mittelwertprinzip wie in anderen Antworten.
quelle
JavaScript, 28 Byte
Probieren Sie es online!
quelle
Perl 5
-pa -MList::Util=reduce
, 26 BytesProbieren Sie es online!
quelle
Perl 6 , 14 Bytes
Probieren Sie es online!
1 / **
ist eine anonyme Funktion, die eine Liste der Kehrwerte ihrer Argumente zurückgibt.1 / *.sum
ist eine weitere anonyme Funktion, die den Kehrwert der Summe der Elemente ihres Listenarguments zurückgibt. Dero
Bediener stellt diese beiden Funktionen zusammen.quelle
Bash + Coreutils, 25 Bytes
TIO
quelle
Wolfram Language (Mathematica) , 10 Byte
Probieren Sie es online!
quelle
HarmonicMean
und ist länger.MathGolf , 3 Bytes
∩
Σ
Probieren Sie es online aus.
quelle
PHP , 51 Bytes
Kehrwert der Summe der Kehrwerte. Eingabe ist
$a
.Probieren Sie es online!
quelle
1/array_reduce($a,fn($c,$i)=>$c+1/$i);
(38 Bytes). Lesen Sie mehr in wiki.php.net/rfc/arrow_functionsJavaScript (ES6), 29 Byte
Probieren Sie es online!
oder:
Probieren Sie es online!
Bei diesem Ansatz ist die Verwendung von
map()
(wie bei Shaggy ) 1 Byte kürzer.quelle
Python 3 , 30 Bytes
Probieren Sie es online!
quelle
Perl 5 (-p), 17 Bytes
Probieren Sie es online!
quelle
x86-64 Maschinencode -
2018 BytesEingabe - Windows-Aufrufkonvention. Erster Parameter ist die Anzahl der Widerstände in
RCX
. Ein Zeiger auf die Widerstände ist inRDX
.*ps
Anweisungen werden verwendet, da sie ein Byte kleiner sind. Technisch gesehen können Sie nur ungefähr 2 ^ 61 Widerstände haben, aber lange vorher haben Sie keinen RAM mehr. Die Präzision ist auch nicht großartig, da wir verwendenrcpps
.quelle
Java 8, 24 Bytes
Ich bemerkte, dass es noch keine Java-Antwort gab, also dachte ich mir, ich würde eine hinzufügen.
Probieren Sie es online aus.
Erläuterung:
Verwendet den gleichen harmonischen Mittelwertansatz wie andere Antworten:
quelle
MATL , 5 Bytes
Probieren Sie es online!
Ich bin mir nicht sicher, ob "do two" (
,
) als Schleife zählt, aber dies ist nur das harmonische Mittel, geteilt durchn
.Alternativ sind
,-1^s
es auch fünf Bytes.quelle
Intel 8087 FPU-Maschinencode, 19 Byte
Hierbei werden die stapelbasierten Gleitkommaanweisungen in der 8087-FPU des ursprünglichen IBM-PCs verwendet.
Eingang ist Zeiger auf Widerstandswerte in
[SI]
, Anzahl der Widerstände inCX
. Die Ausgabe erfolgt auf einen Wert mit einfacher Genauigkeit (DD) bei[DI]
.quelle
Dart , 42 Bytes
Probieren Sie es online!
Wenn Sie den
num
Typ explizit angeben müssen, ist dies ein bisschen unsinnig. Dies verhindert das Ableiten von Typen, da daraus abgeleitet werden würde, dass(dynamic, dynamic) => dynamic
aus irgendeinem Grund keine Double- Werte erzielt werden könnenquelle
PHP , 40 Bytes
Probieren Sie es online!
Tests: Online ausprobieren!
Ähnlich wie die Lösung von Yimin Rong, jedoch ohne integrierte Funktionen, und alle Programmbytes sind in der Byteanzahl enthalten.
quelle
Python 3,
5844 BytesEine rekursive Funktion. Erfordert, dass Argumente wie folgt entpackt übergeben werden:
oder
Erläuterung:
quelle
Kohle , 7 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Berechnet den von jedem Widerstand gezogenen Strom bei Anlegen von 1 V, berechnet die Summe und berechnet den Widerstand, der diesen Strom bei Anlegen von 1 V ziehen würde. Erläuterung:
quelle
J , 6 Bytes
Probieren Sie es online!
quelle
+/&.:%
[MATLAB], 15 Bytes
Ein Byte mehr als flawr ausgezeichnete Antwort, aber ich musste andere Funktionen verwenden, also hier geht:
Es ist ziemlich explizit, es summiert die Inverse der Widerstände und invertiert dann die Summe, um den äquivalenten Parallelwiderstand auszugeben.
quelle
Viertens (gviertens) , 49 Bytes
Probieren Sie es online!
Die Eingabe ist eine Speicheradresse und eine Arraylänge (wird als spontanes Array verwendet, da Forth kein eingebautes Array-Konstrukt hat).
Verwendet die Methode der inversen Summe wie die meisten anderen Antworten
Code Erklärung
quelle
expl3 (LaTeX3-Programmierschicht), 65 Bytes
Im Folgenden wird eine Funktion definiert, die das Ergebnis auf dem Terminal
expl3
ausgibt (leider mit sehr ausführlichen Funktionsnamen):Ein vollständiges Skript, das vom Terminal aus ausgeführt werden kann, einschließlich aller Testfälle sowie des Setups, um Folgendes einzugeben
expl3
:Wenn mit
pdflatex <filename>
dem folgenden Befehl ausgeführt wird, wird die Konsolenausgabe angezeigt:Erläuterung
\fp_show:n
: wertet sein Argument als Gleitkommaausdruck aus und gibt das Ergebnis auf dem Terminal aus. Dabei wird jedes erweiterbare Makro erweitert.\clist_map_function:nN
: benötigt zwei Argumente, eine durch Kommas getrennte Liste und eine Funktion / ein Makro, wenn sie so aufgerufen wird, als würde\clist_map_function:nN { l1, l2, l3 } \foo
sie zu so etwas erweitert\foo{l1}\foo{l2}\foo{l3}
. In unserem Fall wird statt des\foo
Makros\2
das verwendet, das sich zu erweitert,+1/
so dass sich der Ausdruck zu erweitert+1/{l1}+1/{l2}+1/{l3}
quelle